Date: Tuesday, May 17, 2016 @ 21:19:25
  Author: arojas
Revision: 175567

Add patch

Added:
  sagemath/trunk/is-package-installed.patch

----------------------------+
 is-package-installed.patch |  387 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 387 insertions(+)

Added: is-package-installed.patch
===================================================================
--- is-package-installed.patch                          (rev 0)
+++ is-package-installed.patch  2016-05-17 19:19:25 UTC (rev 175567)
@@ -0,0 +1,387 @@
+diff --git a/src/sage/databases/cremona.py b/src/sage/databases/cremona.py
+index 0a5f794..2969d92 100644
+--- a/src/sage/databases/cremona.py
++++ b/src/sage/databases/cremona.py
+@@ -52,7 +52,6 @@ from sage.misc.prandom import randint
+ 
+ import sage.schemes.elliptic_curves.constructor as elliptic
+ from sql_db import SQLDatabase, verify_column
+-from sage.misc.package import is_package_installed
+ from sage.env import SAGE_SHARE
+ from sage.misc.all import walltime
+ 
+@@ -827,7 +826,7 @@ class MiniCremonaDatabase(SQLDatabase):
+             if N < self.largest_conductor():
+                 message = "There is no elliptic curve with label " + label \
+                     + " in the database"
+-            elif is_package_installed('database_cremona_ellcurve'):
++            elif os.path.isfile(os.path.join(SAGE_SHARE, "cremona", 
"cremona.db")):
+                 message = "There is no elliptic curve with label " + label \
+                     + " in the currently available databases"
+             else:
+@@ -1676,7 +1675,7 @@ def CremonaDatabase(name=None,mini=None,set_global=None):
+     if name is None and not set_global:
+         return _db
+     if set_global and name is None:
+-        if is_package_installed('database_cremona_ellcurve'):
++        if os.path.isfile(os.path.join(SAGE_SHARE, "cremona", "cremona.db")):
+             name = 'cremona'
+         else:
+             name = 'cremona mini'
+diff --git a/src/sage/game_theory/normal_form_game.py 
b/src/sage/game_theory/normal_form_game.py
+index b917d2a..80fb20c 100644
+--- a/src/sage/game_theory/normal_form_game.py
++++ b/src/sage/game_theory/normal_form_game.py
+@@ -612,8 +612,9 @@ from sage.rings.all import QQ
+ from sage.structure.sage_object import SageObject
+ from sage.matrix.constructor import matrix
+ from sage.matrix.constructor import vector
+-from sage.misc.package import is_package_installed
+ from sage.misc.temporary_file import tmp_filename
++import os
++from sage.env import SAGE_LOCAL
+ 
+ try:
+     from gambit import Game
+@@ -1315,13 +1316,13 @@ class NormalFormGame(SageObject, MutableMapping):
+             raise ValueError("utilities have not been populated")
+ 
+         if not algorithm:
+-            if is_package_installed('lrslib'):
++            if os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'lrs')):
+                 algorithm = "lrs"
+             else:
+                 algorithm = "enumeration"
+ 
+         if algorithm == "lrs":
+-            if not is_package_installed('lrslib'):
++            if not os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'lrs')):
+                 raise NotImplementedError("lrslib is not installed")
+ 
+             return self._solve_lrs(maximization)
+diff --git a/src/sage/geometry/polyhedron/base.py 
b/src/sage/geometry/polyhedron/base.py
+index 2f58d8b..eb519a2 100644
+--- a/src/sage/geometry/polyhedron/base.py
++++ b/src/sage/geometry/polyhedron/base.py
+@@ -20,7 +20,6 @@ import six
+ from sage.structure.element import Element, coerce_binop, is_Vector
+ 
+ from sage.misc.all import cached_method, prod
+-from sage.misc.package import is_package_installed
+ 
+ from sage.rings.all import QQ, ZZ
+ from sage.rings.real_double import RDF
+@@ -3690,7 +3689,9 @@ class Polyhedron_base(Element):
+ 
+              David Avis's lrs program.
+         """
+-        if not is_package_installed('lrslib'):
++        import os
++        from sage.env import SAGE_LOCAL
++        if os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'lrs')) != True:
+             raise NotImplementedError('You must install the optional lrslib 
package '
+                                        'for this function to work')
+ 
+diff --git a/src/sage/graphs/generators/classical_geometries.py 
b/src/sage/graphs/generators/classical_geometries.py
+index e80f2a5..04cd9ce 100644
+--- a/src/sage/graphs/generators/classical_geometries.py
++++ b/src/sage/graphs/generators/classical_geometries.py
+@@ -1287,10 +1287,9 @@ def CossidentePenttilaGraph(q):
+         raise ValueError('q(={}) must be an odd prime power'.format(q))
+ 
+     from sage.libs.gap.libgap import libgap
+-    from sage.misc.package import is_package_installed, PackageNotFoundError
++    from sage.interfaces.gap import gap
+ 
+-    if not is_package_installed('gap_packages'):
+-        raise PackageNotFoundError('gap_packages')
++    gap.load_package("grape")
+ 
+     adj_list=libgap.function_factory("""function(q)
+         local z, e, so, G, nu, G1, G0, B, T, s, O1, O2, x;
+diff --git a/src/sage/graphs/generic_graph.py 
b/src/sage/graphs/generic_graph.py
+index 252984f..ce19682 100644
+--- a/src/sage/graphs/generic_graph.py
++++ b/src/sage/graphs/generic_graph.py
+@@ -7833,7 +7833,6 @@ class GenericGraph(GenericGraph_pyx):
+            sage: abs(flow_ff-flow_igraph) < 0.00001         # optional 
python_igraph
+            True
+         """
+-        from sage.misc.package import is_package_installed
+         self._scream_if_not_simple(allow_loops=True)
+         if vertex_bound and algorithm in ["FF", "igraph"]:
+             raise ValueError("This method does not support both " +
+@@ -7851,10 +7850,12 @@ class GenericGraph(GenericGraph_pyx):
+         if algorithm is None:
+             if vertex_bound:
+                 algorithm = "LP"
+-            elif is_package_installed("python_igraph"):
+-                algorithm = "igraph"
+             else:
+-                algorithm = "FF"
++                algorithm = "igraph"
++                try:
++                    import igraph
++                except ImportError:
++                    algorithm = "FF"
+ 
+         if (algorithm == "FF"):
+             return self._ford_fulkerson(x,y, value_only=value_only, 
integer=integer, use_edge_labels=use_edge_labels)
+@@ -20134,17 +20135,22 @@ class GenericGraph(GenericGraph_pyx):
+             Subgroup of (Permutation Group with generators 
[(0,7)(1,4)(2,3)(6,8)]) generated by [(0,7)(1,4)(2,3)(6,8)]]
+ 
+         """
+-        from sage.misc.package import is_package_installed
++        has_bliss=True
++        try:
++            from sage.graphs.bliss import automorphism_group
++        except ImportError:
++            has_bliss=False
++
+         if (algorithm == 'bliss'           or   # explicit choice from the 
user; or
+             (algorithm is None             and  # by default
+              not edge_labels               and
+-             is_package_installed('bliss'))):
++             has_bliss)):
++
++            if (not has_bliss):
++                raise NotImplementedError("you need to install bliss or set 
algorithm=sage to use this command")
++
+             if edge_labels:
+                 raise ValueError("bliss cannot be used when edge_labels is 
True")
+-            try:
+-                from sage.graphs.bliss import automorphism_group
+-            except ImportError:
+-                raise ImportError("You must install the 'bliss' package to 
run this command.")
+ 
+             A = automorphism_group(self, partition)
+ 
+@@ -20786,17 +20792,22 @@ class GenericGraph(GenericGraph_pyx):
+             True
+ 
+         """
+-        from sage.misc.package import is_package_installed
++        has_bliss=True
++        try:
++            from sage.graphs.bliss import canonical_form
++        except ImportError:
++            has_bliss=False
++
+         if (algorithm == 'bliss'           or  # explicit request; or
+             (algorithm is None             and # default choice
+-             is_package_installed('bliss') and
++           has_bliss                     and
+              not edge_labels)):
++
++            if (not has_bliss):
++                raise NotImplementedError("you need to install bliss or set 
algorithm=sage to use this command")
++
+             if edge_labels:
+                 raise ValueError("bliss cannot be used when edge_labels is 
True")
+-            try:
+-                from sage.graphs.bliss import canonical_form
+-            except ImportError:
+-                raise ImportError("You must install the 'bliss' package to 
run this command.")
+             return canonical_form(self, partition, return_graph, certify)
+ 
+         if (algorithm is not None and
+diff --git a/src/sage/graphs/graph_generators.py 
b/src/sage/graphs/graph_generators.py
+index 5919ab3..1766796 100644
+--- a/src/sage/graphs/graph_generators.py
++++ b/src/sage/graphs/graph_generators.py
+@@ -1192,8 +1192,9 @@ class GraphGenerators():
+         .. [buckygen] \G. Brinkmann, J. Goedgebeur and B.D. McKay, Generation 
of Fullerenes,
+           Journal of Chemical Information and Modeling, 52(11):2910-2918, 
2012.
+         """
+-        from sage.misc.package import is_package_installed
+-        if not is_package_installed("buckygen"):
++        import os
++        from sage.env import SAGE_LOCAL
++        if not os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'buckygen')):
+             raise TypeError("the optional buckygen package is not installed")
+ 
+         # number of vertices should be positive
+@@ -1277,8 +1278,9 @@ class GraphGenerators():
+         .. [benzene] \G. Brinkmann, G. Caporossi and P. Hansen, A 
Constructive Enumeration of Fusenes and Benzenoids,
+           Journal of Algorithms, 45:155-166, 2002.
+         """
+-        from sage.misc.package import is_package_installed
+-        if not is_package_installed("benzene"):
++        import os
++        from sage.env import SAGE_LOCAL
++        if not os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'benzene')):
+             raise TypeError("the optional benzene package is not installed")
+ 
+         # number of hexagons should be positive
+@@ -1430,8 +1432,9 @@ class GraphGenerators():
+         .. [plantri] \G. Brinkmann and B.D. McKay, Fast generation of planar 
graphs,
+            MATCH-Communications in Mathematical and in Computer Chemistry, 
58(2):323-357, 2007.
+         """
+-        from sage.misc.package import is_package_installed
+-        if not is_package_installed("plantri"):
++        import os
++        from sage.env import SAGE_LOCAL
++        if not os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'plantri')):
+             raise TypeError("the optional plantri package is not installed")
+ 
+         # number of vertices should be positive
+@@ -1629,8 +1632,9 @@ class GraphGenerators():
+             sage: [g.size() for g in graphs.triangulations(6, 
minimum_connectivity=3)] # optional plantri
+             [12, 12]
+         """
+-        from sage.misc.package import is_package_installed
+-        if not is_package_installed("plantri"):
++        import os
++        from sage.env import SAGE_LOCAL
++        if not os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'plantri')):
+             raise TypeError("the optional plantri package is not installed")
+ 
+         # number of vertices should be positive
+@@ -1783,8 +1787,9 @@ class GraphGenerators():
+             sage: [len(g) for g in graphs.quadrangulations(12, 
no_nonfacial_quadrangles=True, dual=True)]  # optional plantri
+             [10, 10]
+         """
+-        from sage.misc.package import is_package_installed
+-        if not is_package_installed("plantri"):
++        import os
++        from sage.env import SAGE_LOCAL
++        if not os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'plantri')):
+             raise TypeError("the optional plantri package is not installed")
+ 
+         # number of vertices should be positive
+diff --git a/src/sage/graphs/lovasz_theta.py b/src/sage/graphs/lovasz_theta.py
+index 0d345c9..60948d2 100644
+--- a/src/sage/graphs/lovasz_theta.py
++++ b/src/sage/graphs/lovasz_theta.py
+@@ -65,10 +65,9 @@ def lovasz_theta(graph):
+     from sage.misc.temporary_file import tmp_filename
+     import os, subprocess
+     from sage.env import SAGE_LOCAL
+-    from sage.misc.package import is_package_installed, PackageNotFoundError
+ 
+-    if not is_package_installed('csdp'):
+-        raise PackageNotFoundError("csdp")
++    if not os.path.isfile(os.path.join(SAGE_LOCAL, 'bin', 'theta')):
++        raise NotImplementedError("You must install csdp before using this 
function")
+ 
+     g = graph.relabel(inplace=False, perm=range(1,n+1)).networkx_graph()
+     tf_name = tmp_filename()
+diff --git a/src/sage/groups/generic.py b/src/sage/groups/generic.py
+index c801636..f43e6d9 100644
+--- a/src/sage/groups/generic.py
++++ b/src/sage/groups/generic.py
+@@ -1396,15 +1396,15 @@ def structure_description(G, latex=False):
+         sage: groups.matrix.GL(4,2).structure_description() # optional - 
database_gap
+         'A8'
+     """
+-    import re
+-    from sage.misc.package import is_package_installed
++    import re, os
++    from sage.env import SAGE_LOCAL
+     def correct_dihedral_degree(match):
+         return "%sD%d" % (match.group(1), int(match.group(2))/2)
+ 
+     try:
+         description = str(G._gap_().StructureDescription())
+     except RuntimeError:
+-        if not is_package_installed('database_gap'):
++      if not os.path.isfile(os.path.join(SAGE_LOCAL, "gap", "latest", 
"small", "readsml.g")):
+             raise RuntimeError("You must install the optional database_gap 
package first.")
+         raise
+ 
+diff --git a/src/sage/groups/perm_gps/permgroup.py 
b/src/sage/groups/perm_gps/permgroup.py
+index e42db61..d4d5684 100644
+--- a/src/sage/groups/perm_gps/permgroup.py
++++ b/src/sage/groups/perm_gps/permgroup.py
+@@ -143,7 +143,6 @@ from sage.groups.perm_gps.permgroup_element import 
PermutationGroupElement, stan
+ from sage.groups.abelian_gps.abelian_group import AbelianGroup
+ from sage.misc.cachefunc import cached_method
+ from sage.groups.class_function import ClassFunction
+-from sage.misc.package import is_package_installed
+ from sage.sets.finite_enumerated_set import FiniteEnumeratedSet
+ from sage.categories.all import FiniteEnumeratedSets
+ from sage.groups.conjugacy_classes import ConjugacyClassGAP
+@@ -188,8 +187,6 @@ def hap_decorator(f):
+     """
+     @wraps(f)
+     def wrapped(self, n, p=0):
+-        if not is_package_installed('gap_packages'):
+-            raise RuntimeError("You must install the optional gap_packages 
package.")
+         load_hap()
+         from sage.arith.all import is_prime
+         if not (p == 0 or is_prime(p)):
+@@ -1681,9 +1678,7 @@ class PermutationGroup_generic(group.FiniteGroup):
+         try:
+             return [Integer(n) for n in self._gap_().IdGroup()]
+         except RuntimeError:
+-            if not is_package_installed('database_gap'):
+-                raise RuntimeError("You must install the optional 
database_gap package first.")
+-            raise
++            raise RuntimeError("You must install the optional gap_packages 
package.")
+ 
+     def id(self):
+         """
+@@ -1734,9 +1729,7 @@ class PermutationGroup_generic(group.FiniteGroup):
+         try:
+             return Integer(self._gap_().PrimitiveIdentification())
+         except RuntimeError:
+-            if not is_package_installed('database_gap'):
+-                raise RuntimeError("You must install the optional 
database_gap package first.")
+-            raise
++            raise RuntimeError("You must install the optional gap_packages 
package.")
+ 
+     def center(self):
+         """
+@@ -4112,8 +4105,6 @@ class PermutationGroup_generic(group.FiniteGroup):
+         - David Joyner and Graham Ellis
+ 
+         """
+-        if not is_package_installed('gap_packages'):
+-            raise RuntimeError("You must install the optional gap_packages 
package.")
+         load_hap()
+         from sage.arith.all import is_prime
+         if not (p == 0 or is_prime(p)):
+diff --git a/src/sage/misc/all.py b/src/sage/misc/all.py
+index 90e6985..21daeb0 100644
+--- a/src/sage/misc/all.py
++++ b/src/sage/misc/all.py
+@@ -52,11 +52,6 @@ from fpickle import pickle_function, unpickle_function
+ 
+ from dist import install_scripts
+ 
+-from package import (install_package,
+-        installed_packages, is_package_installed,
+-        standard_packages, optional_packages, experimental_packages,
+-        upgrade, package_versions)
+-
+ from pager import pager
+ 
+ lazy_import('sage.misc.sagedoc', ['browse_sage_doc',
+diff --git a/src/sage/rings/polynomial/multi_polynomial_sequence.py 
b/src/sage/rings/polynomial/multi_polynomial_sequence.py
+index da41cb0..49cae0b 100644
+--- a/src/sage/rings/polynomial/multi_polynomial_sequence.py
++++ b/src/sage/rings/polynomial/multi_polynomial_sequence.py
+@@ -158,7 +158,6 @@ from sage.misc.cachefunc import cached_method
+ 
+ from types import GeneratorType
+ from sage.misc.converting_dict import KeyConvertingDict
+-from sage.misc.package import is_package_installed
+ 
+ from sage.structure.sequence import Sequence, Sequence_generic
+ 
+@@ -1428,10 +1427,11 @@ class 
PolynomialSequence_gf2(PolynomialSequence_generic):
+ 
+         if S != []:
+             if algorithm == "exhaustive_search":
+-                if not is_package_installed('fes'):
+-                    from sage.misc.package import PackageNotFoundError
+-                    raise PackageNotFoundError("fes")
+-                from sage.libs.fes import exhaustive_search
++                try:
++                    from sage.libs.fes import exhaustive_search
++                except ImportError:
++                    raise RuntimeError("You must install the optional fes 
package.")
++
+                 solutions = exhaustive_search(S, max_sols=n, verbose=verbose, 
**kwds)
+ 
+             elif algorithm == "polybori":

Reply via email to