parse-lp 3.0.0__tar.gz → 3.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. {parse_lp-3.0.0 → parse_lp-3.0.2}/Cargo.lock +70 -4
  2. {parse_lp-3.0.0 → parse_lp-3.0.2}/PKG-INFO +1 -1
  3. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/Cargo.toml +1 -1
  4. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/python/CHANGELOG.md +7 -0
  5. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/Cargo.toml +4 -3
  6. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/README.md +50 -2
  7. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/rust/CHANGELOG.md +14 -0
  8. parse_lp-3.0.2/rust/src/compat/lp_solvers.rs +519 -0
  9. parse_lp-3.0.2/rust/src/compat/mod.rs +2 -0
  10. parse_lp-3.0.2/rust/src/lib.rs +50 -0
  11. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/model.rs +1 -9
  12. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__afiro.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__afiro.snap +1 -1
  13. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__afiro_ext.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__afiro_ext.snap +1 -1
  14. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__american_steel_problem.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__american_steel_problem.snap +1 -1
  15. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__beer_distribution_problem.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__beer_distribution_problem.snap +1 -1
  16. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__blank_lines.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__blank_lines.snap +1 -1
  17. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__boeing1.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__boeing1.snap +1 -1
  18. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__boeing2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__boeing2.snap +1 -1
  19. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__complex_names.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__complex_names.snap +1 -1
  20. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__computer_plant_problem.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__computer_plant_problem.snap +1 -1
  21. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__cplex.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__cplex.snap +1 -1
  22. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__diet.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__diet.snap +1 -1
  23. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__empty_bounds.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__empty_bounds.snap +1 -1
  24. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__fit1d.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__fit1d.snap +1 -1
  25. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__infile_comments.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__infile_comments.snap +1 -1
  26. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__infile_comments2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__infile_comments2.snap +1 -1
  27. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__kb2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__kb2.snap +1 -1
  28. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__limbo.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__limbo.snap +1 -1
  29. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__lol.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__lol.snap +1 -1
  30. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__milo1.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__milo1.snap +1 -1
  31. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__missing_signs.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__missing_signs.snap +1 -1
  32. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__model.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__model.snap +1 -1
  33. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__model2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__model2.snap +1 -1
  34. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__mosek.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__mosek.snap +1 -1
  35. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__mosek_bounds.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__mosek_bounds.snap +1 -1
  36. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__nom_fit2d.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__nom_fit2d.snap +1 -1
  37. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__obj3_2cons.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__obj3_2cons.snap +1 -1
  38. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__obj_1cons_all_variables_with_bounds.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__obj_1cons_all_variables_with_bounds.snap +1 -1
  39. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__obj_2cons_all_variable_types.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__obj_2cons_all_variable_types.snap +1 -1
  40. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__obj_2cons_only_binary_vars.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__obj_2cons_only_binary_vars.snap +1 -1
  41. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__output.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__output.snap +1 -1
  42. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__output2_1.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__output2_1.snap +1 -1
  43. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__output2_2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__output2_2.snap +1 -1
  44. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__output2_3.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__output2_3.snap +1 -1
  45. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__output2_4.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__output2_4.snap +1 -1
  46. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__pulp.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__pulp.snap +1 -1
  47. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__test2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__pulp2.snap +1 -1
  48. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__sc50a.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__sc50a.snap +1 -1
  49. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__scientific_notation.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__scientific_notation.snap +1 -1
  50. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__scientific_notation_2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__scientific_notation_2.snap +1 -1
  51. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__sos.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__sos.snap +1 -1
  52. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__sudoku.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__sudoku.snap +1 -1
  53. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__test.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__test.snap +1 -1
  54. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__pulp2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__test2.snap +1 -1
  55. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__wbm.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__wbm.snap +1 -1
  56. parse_lp-3.0.0/rust/tests/snapshots/test_nom_from_file__whiskas_model_2.snap → parse_lp-3.0.2/rust/tests/snapshots/test_from_file__whiskas_model_2.snap +1 -1
  57. parse_lp-3.0.0/rust/tests/test_nom_from_file.rs → parse_lp-3.0.2/rust/tests/test_from_file.rs +0 -2
  58. parse_lp-3.0.2/rust/tests/test_lp_solvers_compat.rs +78 -0
  59. parse_lp-3.0.0/rust/src/lib.rs +0 -94
  60. parse_lp-3.0.0/rust/src/perf.rs +0 -376
  61. {parse_lp-3.0.0 → parse_lp-3.0.2}/Cargo.toml +0 -0
  62. {parse_lp-3.0.0 → parse_lp-3.0.2}/LICENSE-APACHE +0 -0
  63. {parse_lp-3.0.0 → parse_lp-3.0.2}/README.md +0 -0
  64. {parse_lp-3.0.0 → parse_lp-3.0.2}/parse_lp/__init__.py +0 -0
  65. {parse_lp-3.0.0 → parse_lp-3.0.2}/parse_lp/parse_lp.pyi +0 -0
  66. {parse_lp-3.0.0 → parse_lp-3.0.2}/parse_lp/py.typed +0 -0
  67. {parse_lp-3.0.0 → parse_lp-3.0.2}/pyproject.toml +0 -0
  68. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/.cargo/config.toml +0 -0
  69. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/.gitignore +0 -0
  70. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/CHANGELOG.md +0 -0
  71. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/LICENSE-APACHE +0 -0
  72. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/MANIFEST.in +0 -0
  73. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/Makefile +0 -0
  74. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/README.md +0 -0
  75. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/parse_lp/__init__.py +0 -0
  76. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/parse_lp/parse_lp.pyi +0 -0
  77. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/parse_lp/py.typed +0 -0
  78. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/resources/afiro.lp +0 -0
  79. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/src/lib.rs +0 -0
  80. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/__init__.py +0 -0
  81. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/conftest.py +0 -0
  82. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/fixtures/afiro.lp +0 -0
  83. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/fixtures/minimize.lp +0 -0
  84. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/fixtures/simple.lp +0 -0
  85. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/test_csv_writer.py +0 -0
  86. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/test_lp_parser.py +0 -0
  87. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/tests/test_lp_writer.py +0 -0
  88. {parse_lp-3.0.0 → parse_lp-3.0.2}/python/uv.lock +0 -0
  89. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/CHANGELOG.md +0 -0
  90. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/build.rs +0 -0
  91. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/1obj_1cons_all_variables_with_bounds.lp +0 -0
  92. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/2obj_2cons_all_variable_types.lp +0 -0
  93. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/2obj_2cons_only_binary_vars.lp +0 -0
  94. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/3obj_2cons.lp +0 -0
  95. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/AmericanSteelProblem.lp +0 -0
  96. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/BeerDistributionProblem.lp +0 -0
  97. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/ComputerPlantProblem.lp +0 -0
  98. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/WhiskasModel2.lp +0 -0
  99. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/afiro.lp +0 -0
  100. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/afiro_ext.lp +0 -0
  101. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/blank_lines.lp +0 -0
  102. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/boeing1.lp +0 -0
  103. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/boeing2.lp +0 -0
  104. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/complex_names.lp +0 -0
  105. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/corrupt.lp +0 -0
  106. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/cplex.lp +0 -0
  107. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/diet.lp +0 -0
  108. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/empty_bounds.lp +0 -0
  109. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/fit1d.lp +0 -0
  110. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/fit2d.lp +0 -0
  111. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/infile_comments.lp +0 -0
  112. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/infile_comments2.lp +0 -0
  113. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/invalid.lp +0 -0
  114. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/kb2.lp +0 -0
  115. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/limbo.lp +0 -0
  116. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/lol.lp +0 -0
  117. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/milo1.lp +0 -0
  118. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/missing_signs.lp +0 -0
  119. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/model.lp +0 -0
  120. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/model2.lp +0 -0
  121. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/mosek.lp +0 -0
  122. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/mosek_bounds.lp +0 -0
  123. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/no_end_section.lp +0 -0
  124. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/optional_labels.lp +0 -0
  125. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/output.lp +0 -0
  126. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/output2_1.lp +0 -0
  127. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/output2_2.lp +0 -0
  128. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/output2_3.lp +0 -0
  129. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/output2_4.lp +0 -0
  130. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/output_cplex_2.lp +0 -0
  131. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/pulp.lp +0 -0
  132. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/pulp2.lp +0 -0
  133. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/sc50a.lp +0 -0
  134. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/scientific_notation.lp +0 -0
  135. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/scientific_notation_2.lp +0 -0
  136. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/semi_continuous.lp +0 -0
  137. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/sos.lp +0 -0
  138. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/sudoku.lp +0 -0
  139. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/test.lp +0 -0
  140. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/test2.lp +0 -0
  141. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/test_copy.lp +0 -0
  142. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/resources/wbm.lp +0 -0
  143. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/bin/main.rs +0 -0
  144. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/builder.rs +0 -0
  145. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/context.rs +0 -0
  146. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/csv.rs +0 -0
  147. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/error.rs +0 -0
  148. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/lexer.rs +0 -0
  149. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/lp.lalrpop +0 -0
  150. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/parser.rs +0 -0
  151. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/problem.rs +0 -0
  152. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/snapshots/lp_parser_rs__problem__test__complete_input.snap +0 -0
  153. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/snapshots/lp_parser_rs__problem__test__minified_example.snap +0 -0
  154. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/snapshots/lp_parser_rs__problem__test__small_input.snap +0 -0
  155. {parse_lp-3.0.0 → parse_lp-3.0.2}/rust/src/writer.rs +0 -0
@@ -201,6 +201,22 @@ version = "1.0.2"
201
201
  source = "registry+https://github.com/rust-lang/crates.io-index"
202
202
  checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
203
203
 
204
+ [[package]]
205
+ name = "errno"
206
+ version = "0.3.14"
207
+ source = "registry+https://github.com/rust-lang/crates.io-index"
208
+ checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
209
+ dependencies = [
210
+ "libc",
211
+ "windows-sys 0.61.2",
212
+ ]
213
+
214
+ [[package]]
215
+ name = "fastrand"
216
+ version = "2.3.0"
217
+ source = "registry+https://github.com/rust-lang/crates.io-index"
218
+ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
219
+
204
220
  [[package]]
205
221
  name = "fixedbitset"
206
222
  version = "0.5.7"
@@ -364,6 +380,12 @@ version = "0.2.178"
364
380
  source = "registry+https://github.com/rust-lang/crates.io-index"
365
381
  checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
366
382
 
383
+ [[package]]
384
+ name = "linux-raw-sys"
385
+ version = "0.11.0"
386
+ source = "registry+https://github.com/rust-lang/crates.io-index"
387
+ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
388
+
367
389
  [[package]]
368
390
  name = "lock_api"
369
391
  version = "0.4.14"
@@ -413,9 +435,19 @@ dependencies = [
413
435
  "logos-codegen",
414
436
  ]
415
437
 
438
+ [[package]]
439
+ name = "lp-solvers"
440
+ version = "1.1.0"
441
+ source = "registry+https://github.com/rust-lang/crates.io-index"
442
+ checksum = "66359e50c955cfdb8a21a45289cfd2599ec4aaae1aa812a2dbebabdd8d9c185f"
443
+ dependencies = [
444
+ "quick-xml",
445
+ "tempfile",
446
+ ]
447
+
416
448
  [[package]]
417
449
  name = "lp_parser_rs"
418
- version = "3.0.0"
450
+ version = "3.0.2"
419
451
  dependencies = [
420
452
  "csv",
421
453
  "diff-struct",
@@ -425,10 +457,9 @@ dependencies = [
425
457
  "lalrpop-util",
426
458
  "log",
427
459
  "logos",
428
- "memchr",
460
+ "lp-solvers",
429
461
  "serde",
430
462
  "serde_json",
431
- "smallvec",
432
463
  "thiserror",
433
464
  "unique_id",
434
465
  ]
@@ -558,7 +589,7 @@ dependencies = [
558
589
 
559
590
  [[package]]
560
591
  name = "parse_lp"
561
- version = "3.0.0"
592
+ version = "3.0.2"
562
593
  dependencies = [
563
594
  "lp_parser_rs",
564
595
  "pyo3",
@@ -714,6 +745,15 @@ dependencies = [
714
745
  "syn 2.0.111",
715
746
  ]
716
747
 
748
+ [[package]]
749
+ name = "quick-xml"
750
+ version = "0.38.4"
751
+ source = "registry+https://github.com/rust-lang/crates.io-index"
752
+ checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
753
+ dependencies = [
754
+ "memchr",
755
+ ]
756
+
717
757
  [[package]]
718
758
  name = "quote"
719
759
  version = "1.0.42"
@@ -776,6 +816,19 @@ dependencies = [
776
816
  "semver",
777
817
  ]
778
818
 
819
+ [[package]]
820
+ name = "rustix"
821
+ version = "1.1.2"
822
+ source = "registry+https://github.com/rust-lang/crates.io-index"
823
+ checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
824
+ dependencies = [
825
+ "bitflags",
826
+ "errno",
827
+ "libc",
828
+ "linux-raw-sys",
829
+ "windows-sys 0.61.2",
830
+ ]
831
+
779
832
  [[package]]
780
833
  name = "rustversion"
781
834
  version = "1.0.22"
@@ -931,6 +984,19 @@ version = "0.13.3"
931
984
  source = "registry+https://github.com/rust-lang/crates.io-index"
932
985
  checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
933
986
 
987
+ [[package]]
988
+ name = "tempfile"
989
+ version = "3.23.0"
990
+ source = "registry+https://github.com/rust-lang/crates.io-index"
991
+ checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
992
+ dependencies = [
993
+ "fastrand",
994
+ "getrandom",
995
+ "once_cell",
996
+ "rustix",
997
+ "windows-sys 0.61.2",
998
+ ]
999
+
934
1000
  [[package]]
935
1001
  name = "term"
936
1002
  version = "1.2.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: parse_lp
3
- Version: 3.0.0
3
+ Version: 3.0.2
4
4
  Classifier: License :: OSI Approved :: Apache Software License
5
5
  Classifier: Programming Language :: Python :: 3.9
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "parse_lp"
3
- version = "3.0.0"
3
+ version = "3.0.2"
4
4
  edition = "2021"
5
5
  authors = ["Dan Dixey", "Dan Dixey <dan@functorml.co.uk>"]
6
6
  rust-version = "1.74.0"
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.0.2](https://github.com/dandxy89/lp_parser_rs/compare/parse_lp-v3.0.0...parse_lp-v3.0.2) (2025-12-07)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * release 3.0.2 ([e6771bd](https://github.com/dandxy89/lp_parser_rs/commit/e6771bd29fda5fdb7fa4c424b7892b8fbd9678ea))
9
+
3
10
  ## [3.0.0](https://github.com/dandxy89/lp_parser_rs/compare/parse_lp-v2.6.2...parse_lp-v3.0.0) (2025-12-06)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lp_parser_rs"
3
- version = "3.0.0"
3
+ version = "3.0.2"
4
4
  edition = "2021"
5
5
  authors = ["Dan Dixey", "Dan Dixey <dan@functorml.co.uk>"]
6
6
  rust-version = "1.70.0"
@@ -32,11 +32,10 @@ path = "src/bin/main.rs"
32
32
  csv = { version = "1.4.0", optional = true }
33
33
  diff-struct = { version = "0.5.3", optional = true }
34
34
  lalrpop-util = "0.22.2"
35
+ lp-solvers = { version = "1.1", optional = true }
35
36
  log = "0.4.29"
36
37
  logos = "0.15.1"
37
- memchr = "2.7.6"
38
38
  serde = { version = "1.0.228", features = ["derive"], optional = true }
39
- smallvec = "1.15.1"
40
39
  thiserror = "2.0.17"
41
40
  unique_id = { version = "0.1.7", features = ["sequence"] }
42
41
 
@@ -52,7 +51,9 @@ serde_json = "1.0.145"
52
51
  csv = ["dep:csv"]
53
52
  default = []
54
53
  diff = ["dep:diff-struct", "serde"]
54
+ lp-solvers = ["dep:lp-solvers"]
55
55
  serde = ["dep:serde"]
56
+ test-cbc = ["lp-solvers"]
56
57
 
57
58
  [package.metadata.cargo-machete]
58
59
  ignored = ["diff-struct"]
@@ -10,6 +10,8 @@
10
10
 
11
11
  A robust Rust library for parsing, modifying, and writing Linear Programming (LP) files. Built on the [LALRPOP](https://github.com/lalrpop/lalrpop) parser generator, this crate provides comprehensive support for the LP file format with the ability to parse, programmatically modify, and regenerate LP files according to major industry specifications.
12
12
 
13
+ The Grammar is defined with the [lp.lalrpop](/rust/src/lp.lalrpop) file - should you be curious...
14
+
13
15
  ### Supported Specifications
14
16
 
15
17
  - [IBM CPLEX v22.1.1](https://www.ibm.com/docs/en/icos/22.1.1?topic=cplex-lp-file-format-algebraic-representation)
@@ -54,7 +56,7 @@ Add to your `Cargo.toml`:
54
56
 
55
57
  ```toml
56
58
  [dependencies]
57
- lp_parser_rs = "2.5.2" # x-release-please-version
59
+ lp_parser_rs = "3.0.0" # x-release-please-version
58
60
  ```
59
61
 
60
62
  ### Basic Usage
@@ -127,9 +129,55 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
127
129
 
128
130
  ```toml
129
131
  [dependencies]
130
- lp_parser_rs = { version = "2.5.2", features = ["serde", "diff"] } # x-release-please-version
132
+ lp_parser_rs = { version = "3.0.0", features = ["serde", "diff"] } # x-release-please-version
133
+ ```
134
+
135
+ ### Solving with External Solvers (`lp-solvers` feature)
136
+
137
+ Enable the `lp-solvers` feature to solve parsed LP problems using external solvers like CBC, Gurobi, CPLEX, or GLPK via the [lp-solvers](https://crates.io/crates/lp-solvers) crate:
138
+
139
+ ```toml
140
+ [dependencies]
141
+ lp_parser_rs = { version = "3.0.0", features = ["lp-solvers"] } # x-release-please-version
142
+ lp-solvers = "1.1"
143
+ ```
144
+
145
+ ```rust
146
+ use lp_parser_rs::{problem::LpProblem, ToLpSolvers};
147
+ use lp_solvers::solvers::{CbcSolver, SolverTrait};
148
+
149
+ fn main() -> Result<(), Box<dyn std::error::Error>> {
150
+ let lp_content = r"
151
+ Minimize
152
+ obj: 2 x + 3 y
153
+ Subject To
154
+ c1: x + y <= 10
155
+ c2: x >= 2
156
+ Bounds
157
+ x >= 0
158
+ y >= 0
159
+ End
160
+ ";
161
+
162
+ let problem = LpProblem::parse(lp_content)?;
163
+ let compat = problem.to_lp_solvers()?;
164
+
165
+ // Check for any compatibility warnings
166
+ for warning in compat.warnings() {
167
+ eprintln!("Warning: {}", warning);
168
+ }
169
+
170
+ // Solve using CBC solver (must be installed on your system)
171
+ let solver = CbcSolver::new();
172
+ let solution = solver.run(&compat)?;
173
+ println!("Solution status: {:?}", solution.status);
174
+
175
+ Ok(())
176
+ }
131
177
  ```
132
178
 
179
+ **Limitations:** The lp-solvers compatibility layer does not support multiple objectives (returns an error), strict inequalities (`<`, `>`), or SOS constraints (ignored with a warning).
180
+
133
181
  ## API Reference
134
182
 
135
183
  ### Problem Modification Methods
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.0.2](https://github.com/dandxy89/lp_parser_rs/compare/lp_parser_rs-v3.0.1...lp_parser_rs-v3.0.2) (2025-12-07)
4
+
5
+
6
+ ### Miscellaneous Chores
7
+
8
+ * release 3.0.2 ([e6771bd](https://github.com/dandxy89/lp_parser_rs/commit/e6771bd29fda5fdb7fa4c424b7892b8fbd9678ea))
9
+
10
+ ## [3.0.1](https://github.com/dandxy89/lp_parser_rs/compare/lp_parser_rs-v3.0.0...lp_parser_rs-v3.0.1) (2025-12-07)
11
+
12
+
13
+ ### Miscellaneous Chores
14
+
15
+ * Remove unused consts ([74a363e](https://github.com/dandxy89/lp_parser_rs/commit/74a363eb2eb96eee2e516e0ce0dfff6cd69d76d8))
16
+
3
17
  ## [3.0.0](https://github.com/dandxy89/lp_parser_rs/compare/lp_parser_rs-v2.5.2...lp_parser_rs-v3.0.0) (2025-12-06)
4
18
 
5
19