Merge branch 'release/1.6.1'

This commit is contained in:
Stuart Mitchell 2015-12-25 15:12:52 +09:00
commit 2e75bf0e50
9 changed files with 43 additions and 188 deletions

View File

@ -1,20 +1,25 @@
language: python language: python
python: python:
- "2.6" - '2.6'
- "2.7" - '2.7'
- "3.2" - '3.2'
- "3.3" - '3.3'
- "3.4" - '3.4'
# does not have headers provided, please ask https://launchpad.net/~pypy/+archive/ppa - pypy
# maintainers to fix their pypy-dev package.
- "pypy"
before_install: before_install:
- sudo apt-get update -qq - sudo apt-get update -qq
- sudo apt-get install -qq glpk - sudo apt-get install -qq glpk
#- pip install glpk
#- sudo apt-get install coinor-cbc
# command to install dependencies
install: install:
- pip install . - pip install .
# command to run tests
script: pulptest script: pulptest
before_deploy:
- sudo apt-get install texlive-latex-extra
- sudo apt-get install dvipng
deploy:
provider: pypi
user: StuartMitchell
password:
secure: SVUU0MC4tLFS0EWqybpjWHKHumZ0qB6quhkvvx0pyfn4h6CIgZqhuWdSD/PJomlZp+dfqdQUVq3Tzl50UwQFG4OcBORJ+fVjxGJPkO5dpFsvtoNfBRNV9ZkYzMUx0djXxFKK2sVNqgI2O2sDvZk4eHDD09+mKtoSZ5XeT68Vqno=
on:
tags: true
repo: coin-or/pulp

View File

@ -1,6 +1,8 @@
# PuLP, Copyright J.S. Roy (js@jeannot.org), 2002-2005 # PuLP, Copyright J.S. Roy (js@jeannot.org), 2002-2005
# Copyright S.A.Mitchell (s.mitchell@auckland.ac.nz), 2007- # Copyright S.A.Mitchell (s.mitchell@auckland.ac.nz), 2007-
# See the LICENSE file for copyright information. # See the LICENSE file for copyright information.
1.6.1, 2015-12-25
Fix for dummy variables
1.5.4, 2013-03-18 1.5.4, 2013-03-18
Added cbc support for osx (hopefully) Added cbc support for osx (hopefully)
1.4.9, 2011-03-30 1.4.9, 2011-03-30

View File

@ -22,7 +22,7 @@ solver executable.
See the examples directory for examples. See the examples directory for examples.
PuLP requires Python >= 2.5. PuLP requires Python >= 2.6.
The examples use the default solver (cbc), to use other solvers they must be available. The examples use the default solver (cbc), to use other solvers they must be available.

View File

@ -1,124 +0,0 @@
##############################################################################
#
# Copyright (c) 2006 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Bootstrap a buildout-based project
Simply run this script in a directory containing a buildout.cfg.
The script accepts buildout command-line options, so you can
use the -c option to specify an alternate configuration file.
$Id$
"""
import os, shutil, sys, tempfile
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
from optparse import OptionParser
tmpeggs = tempfile.mkdtemp()
is_jython = sys.platform.startswith('java')
# parsing arguments
parser = OptionParser()
parser.add_option("-v", "--version", dest="version",
help="use a specific zc.buildout version")
parser.add_option("-d", "--distribute",
action="store_true", dest="distribute", default=False,
help="Use Disribute rather than Setuptools.")
options, args = parser.parse_args()
if options.version is not None:
VERSION = '==%s' % options.version
else:
VERSION = ''
USE_DISTRIBUTE = options.distribute
args = args + ['bootstrap']
to_reload = False
try:
import pkg_resources
if not hasattr(pkg_resources, '_distribute'):
to_reload = True
raise ImportError
except ImportError:
ez = {}
if USE_DISTRIBUTE:
exec(urlopen('http://python-distribute.org/distribute_setup.py'
).read(), ez)
ez['use_setuptools'](to_dir=tmpeggs, download_delay=0, no_fake=True)
else:
try:
exec(urlopen('http://peak.telecommunity.com/dist/ez_setup.py')
.read(), ez)
except SyntaxError:
exec(urlopen('http://python-distribute.org/distribute_setup.py')
.read(), ez)
ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
if to_reload:
try:
reload(pkg_resources)
except NameError: # distribute is deprecated by now
pass
else:
import pkg_resources
if sys.platform == 'win32':
def quote(c):
if ' ' in c:
return '"%s"' % c # work around spawn lamosity on windows
else:
return c
else:
def quote (c):
return c
cmd = 'from setuptools.command.easy_install import main; main()'
ws = pkg_resources.working_set
if USE_DISTRIBUTE:
requirement = 'distribute'
else:
requirement = 'setuptools'
if is_jython:
import subprocess
assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd',
quote(tmpeggs), 'zc.buildout' + VERSION],
env=dict(os.environ,
PYTHONPATH=
ws.find(pkg_resources.Requirement.parse(requirement)).location
),
).wait() == 0
else:
assert os.spawnle(
os.P_WAIT, sys.executable, quote (sys.executable),
'-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout' + VERSION,
dict(os.environ,
PYTHONPATH=
ws.find(pkg_resources.Requirement.parse(requirement)).location
),
) == 0
ws.add_entry(tmpeggs)
ws.require('zc.buildout' + VERSION)
import zc.buildout.buildout
zc.buildout.buildout.main(args)
shutil.rmtree(tmpeggs)

View File

@ -1,14 +0,0 @@
[buildout]
develop = .
parts = pythonpulp scripts
[pythonpulp]
recipe = zc.recipe.egg
interpreter = pythonpulp
eggs = pulp
[scripts]
recipe = zc.recipe.egg:scripts
eggs = pulp

7
setup.cfg Normal file
View File

@ -0,0 +1,7 @@
[build_sphinx]
source-dir = doc/source
build-dir = build/doc
all_files = 1
[upload_sphinx]
upload-dir = doc/build/html

View File

@ -1,21 +0,0 @@
[buildout]
extends = buildout.cfg
[glpk]
recipe = zc.recipe.cmmi
url = http://ftp.gnu.org/gnu/glpk/glpk-4.42.tar.gz
[cbc]
recipe = zc.recipe.cmmi
url = http://www.coin-or.org/download/source/Cbc/Cbc-2.4.0.tgz
[coinMP]
recipe = zc.recipe.cmmi
#url = http://pulp-or.googlecode.com/files/CoinMP-1.4.0patched.tar.gz
url = http://www.coin-or.org/download/source/CoinMP/CoinMP-1.4.0.tgz
#patch = ${buildout:directory}/patches/CoinMP-1.4.0.patch
[install-coinMP]
recipe = plone.recipe.command
command = cp ${buildout:directory}/parts/coinMP/lib/* ${buildout:directory}/src/pulp/solverdir/
update-command = cp ${buildout:directory}/parts/coinMP/lib/* ${buildout:directory}/src/pulp/solverdir/

View File

@ -27,7 +27,7 @@
This file contains the constant definitions for PuLP This file contains the constant definitions for PuLP
Note that hopefully these will be changed into something more pythonic Note that hopefully these will be changed into something more pythonic
""" """
VERSION = '1.6.0' VERSION = '1.6.1'
EPS = 1e-7 EPS = 1e-7
# variable categories # variable categories

View File

@ -243,7 +243,7 @@ class LpVariable(LpElement):
This class models an LP Variable with the specified associated parameters This class models an LP Variable with the specified associated parameters
:param name: The name of the variable used in the output .lp file :param name: The name of the variable used in the output .lp file
:param lowbound: The lower bound on this variable's range. :param lowBound: The lower bound on this variable's range.
Default is negative infinity Default is negative infinity
:param upBound: The upper bound on this variable's range. :param upBound: The upper bound on this variable's range.
Default is positive infinity Default is positive infinity
@ -1498,7 +1498,7 @@ class LpProblem(object):
f.write("Minimize\n") f.write("Minimize\n")
else: else:
f.write("Maximize\n") f.write("Maximize\n")
wasNone, dummyVar = self.fixObjective() wasNone, objectiveDummyVar = self.fixObjective()
objName = self.objective.name objName = self.objective.name
if not objName: objName = "OBJ" if not objName: objName = "OBJ"
f.write(self.objective.asCplexLpAffineExpression(objName, constant = 0)) f.write(self.objective.asCplexLpAffineExpression(objName, constant = 0))
@ -1567,7 +1567,7 @@ class LpProblem(object):
f.write(" %s: %.12g\n" % (v.name, val)) f.write(" %s: %.12g\n" % (v.name, val))
f.write("End\n") f.write("End\n")
f.close() f.close()
self.restoreObjective(wasNone, dummyVar) self.restoreObjective(wasNone, objectiveDummyVar)
def assignVarsVals(self, values): def assignVarsVals(self, values):
variables = self.variablesDict() variables = self.variablesDict()