{"id":13501598,"url":"https://github.com/coin-or/pulp","last_synced_at":"2026-10-19T08:05:18.701Z","repository":{"id":28722009,"uuid":"32243098","full_name":"coin-or/pulp","owner":"coin-or","description":"A python Linear Programming API","archived":false,"fork":false,"pushed_at":"2026-10-16T21:39:42.000Z","size":101373,"stargazers_count":2490,"open_issues_count":36,"forks_count":439,"subscribers_count":60,"default_branch":"master","last_synced_at":"2026-10-17T07:39:21.175Z","etag":null,"topics":["constraints","mip","pulp","python","solver"],"latest_commit_sha":null,"homepage":"http://coin-or.github.io/pulp/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coin-or.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":"CLAUDE.md","gemini":null,"cursor":".cursor/rules/project-conventions.mdc","copilot":null,"dco":null,"cla":null,"disclosure":null},"funding":{"github":"pchtsp"}},"created_at":"2015-03-15T03:21:16.000Z","updated_at":"2026-10-16T21:39:49.000Z","dependencies_parsed_at":"2026-10-09T00:27:55.463Z","dependency_job_id":null,"html_url":"https://github.com/coin-or/pulp","commit_stats":{"total_commits":366,"total_committers":91,"mean_commits":4.021978021978022,"dds":0.7021857923497268,"last_synced_commit":"a812f001b50119e4479ea5bc17f8e38ce28c4296"},"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/coin-or/pulp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coin-or%2Fpulp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coin-or%2Fpulp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coin-or%2Fpulp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coin-or%2Fpulp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coin-or","download_url":"https://codeload.github.com/coin-or/pulp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coin-or%2Fpulp/sbom","scorecard":{"id":298913,"data":{"date":"2025-08-11","repo":{"name":"github.com/coin-or/pulp","commit":"ba4a17f0a3f29b7ea5bd02d17c1ff1f4c9466823"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":4,"reason":"Found 14/29 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"24 commit(s) and 14 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build_docs.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-to-test-pypi.yml:1","Warn: no topLevel permission defined: .github/workflows/pythonpackage.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":3,"reason":"binaries present in source code","details":["Warn: binary detected: pulp/solverdir/CoinMP.dll:1","Warn: binary detected: pulp/solverdir/cbc/linux/arm64/cbc:1","Warn: binary detected: pulp/solverdir/cbc/linux/i32/cbc:1","Warn: binary detected: pulp/solverdir/cbc/linux/i64/cbc:1","Warn: binary detected: pulp/solverdir/cbc/osx/i64/cbc:1","Warn: binary detected: pulp/solverdir/cbc/win/i32/cbc.exe:1","Warn: binary detected: pulp/solverdir/cbc/win/i64/cbc.exe:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_docs.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/build_docs.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_docs.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/build_docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_docs.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/build_docs.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_docs.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/build_docs.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-to-test-pypi.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/publish-to-test-pypi.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-to-test-pypi.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/publish-to-test-pypi.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-to-test-pypi.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/publish-to-test-pypi.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-to-test-pypi.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/publish-to-test-pypi.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-to-test-pypi.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/publish-to-test-pypi.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpackage.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/pythonpackage.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpackage.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/pythonpackage.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pythonpackage.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/pythonpackage.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pythonpackage.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/pythonpackage.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pythonpackage.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/coin-or/pulp/pythonpackage.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   8 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish-to-test-pypi.yml:6"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 22 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T20:12:15.787Z","repository_id":28722009,"created_at":"2025-08-17T20:12:15.787Z","updated_at":"2025-08-17T20:12:15.787Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38333509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-17T02:00:06.547Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["constraints","mip","pulp","python","solver"],"created_at":"2024-07-31T22:01:43.089Z","updated_at":"2026-10-19T08:05:18.694Z","avatar_url":"https://github.com/coin-or.png","language":"Python","funding_links":["https://github.com/sponsors/pchtsp"],"categories":["Python","\u003cspan id=\"head24\"\u003e3.2. Optimization\u003c/span\u003e","Optimization"],"sub_categories":["\u003cspan id=\"head25\"\u003e3.2.1. Metaheuristic\u003c/span\u003e"],"readme":"pulp\n**************************\n\n.. image:: https://travis-ci.org/coin-or/pulp.svg?branch=master\n    :target: https://travis-ci.org/coin-or/pulp\n.. image:: https://img.shields.io/pypi/v/pulp\n    :target: https://pypi.org/project/PuLP/\n    :alt: PyPI\n.. image:: https://img.shields.io/pypi/dm/pulp\n    :target: https://pypi.org/project/PuLP/\n    :alt: PyPI - Downloads\n\nPuLP is an linear and mixed integer programming modeler written in Python. With PuLP, it is simple to create MILP optimisation problems and solve them with the latest open-source (or proprietary) solvers.  PuLP can generate MPS or LP files and call solvers such as GLPK_, COIN-OR CLP/`CBC`_, CPLEX_, GUROBI_, MOSEK_, XPRESS_, CHOCO_, MIPCL_, HiGHS_, SCIP_/FSCIP_, and OR-Tools `CP-SAT`_ (via the ``CPSAT`` API).\n\nThe documentation for PuLP can be `found here \u003chttps://coin-or.github.io/pulp/\u003e`_.\n\nPuLP is part of the `COIN-OR project \u003chttps://www.coin-or.org/\u003e`_.\n\n.. note::\n\n   **Upgrading from PuLP 3.x?** PuLP 4.0 has breaking changes: variables are\n   created with ``prob.add_variable(...)``, ``prob.constraints()`` returns a list,\n   and ``prob.solve()`` returns an ``LpSolveStats`` object instead of a status\n   code. See the `guide to migrate from PuLP 3.x to 4.0\n   \u003chttps://coin-or.github.io/pulp/guides/how_to_migrate_to_v4.html\u003e`_\n   (source: `doc/source/guides/how_to_migrate_to_v4.rst\n   \u003chttps://github.com/coin-or/pulp/blob/master/doc/source/guides/how_to_migrate_to_v4.rst\u003e`_).\n\n.. important::\n\n   **CBC is not shipped inside the PuLP package.** Older releases bundled a CBC\n   binary and exposed it as ``PULP_CBC_CMD``; that API and the bundled solver are\n   **removed**. To solve models with CBC through PuLP you should:\n\n   * install PuLP with the optional CBC extra: ``python -m pip install pulp[cbc]``\n     (this installs the `cbcbox \u003chttps://pypi.org/project/cbcbox/\u003e`_ wheel, which\n     provides a CBC executable PuLP can find automatically), **or**\n   * install a CBC build yourself and ensure the ``cbc`` (or ``cbc.exe`` on\n     Windows) executable is on your ``PATH``,\n\n   then use the ``COIN_CMD`` solver (or call ``prob.solve()`` with no arguments\n   when CBC is available; otherwise install another solver such as GLPK or pass\n   an explicit solver). Without CBC or another available solver, the default\n   solve path will raise ``PulpError: No solver available``.\n\nInstallation\n================\n\nPuLP requires Python 3.12 or newer.\n\n**Recommended:** install with CBC support::\n\n     python -m pip install pulp[cbc]\n\nPlain ``python -m pip install pulp`` installs only the modeler; you must then\nsupply your own CBC on ``PATH`` or another solver.\n\nOtherwise follow the download instructions on the `PyPi page \u003chttps://pypi.python.org/pypi/PuLP\u003e`_.\n\nInstalling solvers\n----------------------\n\nPuLP can use a variety of solvers. When CBC is available (via ``pulp[cbc]`` or\n``cbc`` on ``PATH``), ``COIN_CMD`` is the usual open-source MIP/LP choice and is\nselected as the default ahead of GLPK. PuLP can also install other solvers via\noptional PyPI extras (some require a commercial license for running or for large models)::\n\n    python -m pip install pulp[gurobi]\n    python -m pip install pulp[cplex]\n    python -m pip install pulp[xpress]\n    python -m pip install pulp[scip]\n    python -m pip install pulp[highs]\n    python -m pip install pulp[copt]\n    python -m pip install pulp[mosek]\n    python -m pip install pulp[ortools]\n    python -m pip install pulp[cylp]\n    python -m pip install pulp[cbc]\n    python -m pip install pulp[glpk]\n\nIf you want to install all open source solvers (scip, highs, cbc, glpk), you can use the shortcut::\n    python -m pip install pulp[open_py]\n\nFor more information on how to install solvers, see the `guide on configuring solvers \u003chttps://coin-or.github.io/pulp/guides/how_to_configure_solvers.html\u003e`_.\n\nQuickstart \n===============\n\nUse ``LpProblem`` to create a problem, then add variables with ``add_variable``. Create a problem called \"myProblem\" and a variable x with 0 ≤ x ≤ 3::\n\n     from pulp import *\n     prob = LpProblem(\"myProblem\", LpMinimize)\n     x = prob.add_variable(\"x\", 0, 3)\n\nTo create a binary variable y (values 0 or 1)::\n\n     y = prob.add_variable(\"y\", cat=\"Binary\")\n\nCombine variables to create expressions and constraints and add them to the problem::\n\n     prob += x + y \u003c= 2\n\nAn expression is a constraint without a right-hand side (RHS) sense (one of ``=``, ``\u003c=`` or ``\u003e=``). If you add an expression to a problem, it will become the objective::\n\n     prob += -4*x + y\n\nTo solve the problem with the default solver (CBC when installed via ``pulp[cbc]``\nor ``cbc`` on ``PATH``, otherwise another available backend)::\n\n     stats = prob.solve()\n\nIf you want to try another solver to solve the problem::\n\n     stats = prob.solve(GLPK(msg = 0))\n\n``GLPK`` uses GLPK's command-line tool (``glpsol``) and requires it to be on\nyour ``PATH``. To use GLPK's python API instead, install\n``python -m pip install pulp[glpk]`` and use ``PYGLPK``::\n\n     status = prob.solve(PYGLPK(msg = 0))\n\nTo use the OR-Tools CP-SAT solver (install with ``python -m pip install pulp[ortools]``).\nEvery variable must have finite lower and upper bounds; continuous variables are\nsolved on their integer-rounded domain::\n\n     from pulp import CPSAT\n     stats = prob.solve(CPSAT(msg=False))\n\nDisplay the status of the solution::\n\n     stats.status_str\n     \u003e 'Optimal'\n\nYou can get the value of the variables using ``value``. ex::\n\n     value(x)\n     \u003e 2.0\n\n\nEssential Classes\n------------------\n\nThese types form the usual modelling workflow: create an ``LpProblem``, attach\n``LpVariable`` instances with ``add_variable``, build linear expressions (often\nwith ``lpSum`` / ``lpDot`` / ``lpSum_vars`` / ``lpSum_vars_coefs``), combine them\ninto ``LpConstraint`` rows, and call ``solve``.\n\n* ``LpProblem`` -- Container for an LP or MIP: variables, objective, constraints, and solve API\n* ``LpVariable`` -- A decision variable belonging to one problem; used inside expressions and constraints\n* ``LpAffineExpression`` -- A linear combination of variables and a constant (objectives, constraint bodies, intermediate terms)\n* ``LpConstraint`` -- A single row relating an affine expression to a bound with ``\u003c=``, ``=``, or ``\u003e=``:\n\n      a1x1 + a2x2 + ... + anxn (\u003c=, =, \u003e=) b\n\nUseful Functions\n------------------\n\n* ``value()`` -- Finds the value of a variable or expression\n* ``lpSum()`` -- Given a list of the form [a1*x1, a2*x2, ..., an*xn] will construct a linear expression to be used as a constraint or variable\n* ``lpDot()`` -- Given two lists of the form [a1, a2, ..., an] and [x1, x2, ..., xn] will construct a linear expression to be used as a constraint or variable\n* ``lpSum_vars()`` -- Sum of variables with coefficient 1 each (batch construction)\n* ``lpSum_vars_coefs()`` -- Sum of ``coeff * var`` pairs from an iterable of ``(variable, coefficient)`` (batch construction)\n\nMore Examples\n================\n\nSeveral tutorial are given in `documentation \u003chttps://coin-or.github.io/pulp/CaseStudies/index.html\u003e`_ and pure code examples are available in `examples/ directory \u003chttps://github.com/coin-or/pulp/tree/master/examples\u003e`_ .\n\nThe examples assume CBC is available (for example after ``pip install pulp[cbc]``).\nTo use other solvers they must be available (installed and accessible). For more\ninformation, see the `guide on configuring solvers \u003chttps://coin-or.github.io/pulp/guides/how_to_configure_solvers.html\u003e`_.\n\n\nFor Developers \n================\n\nIf you want to install the latest version from GitHub you can run::\n\n    python -m pip install -U \"pulp[cbc] @ git+https://github.com/coin-or/pulp.git\"\n\nBuilding from source\n--------------------------\n\nThis version of PuLP includes a Rust extension (``pulp._rustcore``) that provides the core model, variables, constraints, and expressions. The build uses `maturin \u003chttps://github.com/PyO3/maturin\u003e`_ and requires a Rust toolchain in addition to Python.\n\n**Requirements**\n\n* **Python** 3.12 or newer\n* **Rust** (latest stable). Install from https://rustup.rs/\n* **uv** (recommended for install and dev). See the `uv documentation \u003chttps://docs.astral.sh/uv/\u003e`_ for installation.\n* **OS**: Windows, macOS (x86_64, arm64), or Linux (x86_64, arm64). The Rust extension is built for the host platform.\n\n**Build steps**\n\nFrom the PuLP root directory, create a virtual environment and install the package in editable mode with dev dependencies::\n\n    uv venv\n    uv pip install --group dev -e .[cbc]\n\nOr with plain pip (maturin will be used automatically by the build backend)::\n\n    python -m venv .venv\n    source .venv/bin/activate   # Windows: .venv\\Scripts\\activate\n    python -m pip install --upgrade pip\n    python -m pip install -e \".[cbc]\"\n\n**Running tests**\n\n::\n\n    uv run python -m unittest discover -s pulp/tests -v\n\nBuilding the documentation\n--------------------------\n\nThe PuLP documentation is built with `Sphinx \u003chttps://www.sphinx-doc.org\u003e`_. Use a virtual environment and the dev install above, then::\n\n    cd doc\n    make html\n\nA folder named ``html`` will be created inside ``doc/build/``. Open ``doc/build/html/index.html`` in a browser.\n\nContributing to PuLP\n-----------------------\nInstructions for making your first contribution to PuLP are given `here \u003chttps://coin-or.github.io/pulp/develop/contribute.html\u003e`_.\n\n**Comments, bug reports, patches and suggestions are very welcome!**\n\n* Comments and suggestions: https://github.com/coin-or/pulp/discussions\n* `PuLP Google Group \u003chttps://groups.google.com/g/pulp-or-discuss\u003e`_ — community discussion and Q\u0026A\n* Bug reports: https://github.com/coin-or/pulp/issues\n* Patches: https://github.com/coin-or/pulp/pulls\n\nCopyright and License \n=======================\nPuLP is distributed under an MIT license. \n\n     Copyright J.S. Roy, 2003-2005\n     Copyright Stuart A. Mitchell\n     See the LICENSE file for copyright information.\n\n.. _Python: http://www.python.org/\n\n.. _GLPK: http://www.gnu.org/software/glpk/glpk.html\n.. _CBC: https://github.com/coin-or/Cbc\n.. _CPLEX: http://www.cplex.com/\n.. _GUROBI: http://www.gurobi.com/\n.. _MOSEK: https://www.mosek.com/\n.. _XPRESS: https://www.fico.com/es/products/fico-xpress-solver\n.. _CHOCO: https://choco-solver.org/\n.. _MIPCL: http://mipcl-cpp.appspot.com/\n.. _SCIP: https://www.scipopt.org/\n.. _HiGHS: https://highs.dev\n.. _FSCIP: https://ug.zib.de\n.. _CP-SAT: https://developers.google.com/optimization/cp/cp_solver\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoin-or%2Fpulp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoin-or%2Fpulp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoin-or%2Fpulp/lists"}