diff --git a/src/sage/sat/boolean_polynomials.py b/src/sage/sat/boolean_polynomials.py index 9392b66709e..7f962053e8a 100644 --- a/src/sage/sat/boolean_polynomials.py +++ b/src/sage/sat/boolean_polynomials.py @@ -25,6 +25,9 @@ from sage.rings.polynomial.multi_polynomial_sequence import PolynomialSequence +import six + + def solve(F, converter=None, solver=None, n=1, target_variables=None, **kwds): """ Solve system of Boolean polynomials ``F`` by solving the @@ -157,7 +160,7 @@ def solve(F, converter=None, solver=None, n=1, target_variables=None, **kwds): if not isinstance(solver, SatSolver): solver_kwds = {} - for k, v in kwds.iteritems(): + for k, v in six.iteritems(kwds): if k.startswith("s_"): solver_kwds[k[2:]] = v @@ -170,7 +173,7 @@ def solve(F, converter=None, solver=None, n=1, target_variables=None, **kwds): if not isinstance(converter, ANF2CNFConverter): converter_kwds = {} - for k, v in kwds.iteritems(): + for k, v in six.iteritems(kwds): if k.startswith("c_"): converter_kwds[k[2:]] = v @@ -308,7 +311,7 @@ def learn(F, converter=None, solver=None, max_learnt_length=3, interreduction=Fa from sage.sat.solvers.cryptominisat import CryptoMiniSat as solver solver_kwds = {} - for k, v in kwds.iteritems(): + for k, v in six.iteritems(kwds): if k.startswith("s_"): solver_kwds[k[2:]] = v @@ -320,7 +323,7 @@ def learn(F, converter=None, solver=None, max_learnt_length=3, interreduction=Fa from sage.sat.converters.polybori import CNFEncoder as converter converter_kwds = {} - for k, v in kwds.iteritems(): + for k, v in six.iteritems(kwds): if k.startswith("c_"): converter_kwds[k[2:]] = v diff --git a/src/sage/sat/converters/polybori.py b/src/sage/sat/converters/polybori.py index c890d9a26b0..49f6cf7d822 100644 --- a/src/sage/sat/converters/polybori.py +++ b/src/sage/sat/converters/polybori.py @@ -35,6 +35,9 @@ from sage.combinat.permutation import Permutations from sage.sat.converters import ANF2CNFConverter +import six + + class CNFEncoder(ANF2CNFConverter): """ ANF to CNF Converter using a Dense/Sparse Strategy. This converter distinguishes two classes of @@ -278,13 +281,13 @@ def clauses_sparse(self, f): # any zero block of f+1 blocks = self.zero_blocks(f+1) - C = [dict([(variable, 1-value) for (variable, value) in b.iteritems()]) for b in blocks ] + C = [dict([(variable, 1-value) for (variable, value) in six.iteritems(b)]) for b in blocks ] def to_dimacs_index(v): return v.index()+1 def clause(c): - return [to_dimacs_index(variable) if value == 1 else -to_dimacs_index(variable) for (variable, value) in c.iteritems()] + return [to_dimacs_index(variable) if value == 1 else -to_dimacs_index(variable) for (variable, value) in six.iteritems(c)] for c in C: self.solver.add_clause(clause(c)) diff --git a/src/sage/symbolic/units.py b/src/sage/symbolic/units.py index edac658c4da..4da3af37de3 100644 --- a/src/sage/symbolic/units.py +++ b/src/sage/symbolic/units.py @@ -91,6 +91,7 @@ # standard Python libraries import re +import six # Sage library from .ring import SR @@ -500,8 +501,8 @@ def evalunitdict(): sage: sage.symbolic.units.evalunitdict() """ from sage.misc.all import sage_eval - for key, value in unitdict.iteritems(): - unitdict[key] = dict([(a,sage_eval(repr(b))) for a, b in value.iteritems()]) + for key, value in six.iteritems(unitdict): + unitdict[key] = dict([(a,sage_eval(repr(b))) for a, b in six.iteritems(value)]) # FEATURE IDEA: create a function that would allow users to add # new entries to the table without having to know anything about @@ -510,7 +511,7 @@ def evalunitdict(): # # Format the table for easier use. # - for k, v in unitdict.iteritems(): + for k, v in six.iteritems(unitdict): for a in v: unit_to_type[a] = k for w in unitdict: diff --git a/src/sage/tensor/differential_form_element.py b/src/sage/tensor/differential_form_element.py index b4a1b274cbc..69669940f27 100644 --- a/src/sage/tensor/differential_form_element.py +++ b/src/sage/tensor/differential_form_element.py @@ -30,6 +30,9 @@ from sage.combinat.permutation import Permutation +import six + + def sort_subscript(subscript): """ A subscript is a range of integers. This function sorts a subscript @@ -569,8 +572,8 @@ def __eq__(self, other): # pairs as we go along. for (key1, val1), (key2, val2) in \ - zip(self._components.iteritems(), \ - other._components.iteritems()): + zip(six.iteritems(self._components), \ + six.iteritems(other._components)): if key1 != key2 or str(val1) != str(val2): return False return True diff --git a/src/sage/tensor/modules/ext_pow_free_module.py b/src/sage/tensor/modules/ext_pow_free_module.py index 9c0f044c3f3..4bce4698724 100644 --- a/src/sage/tensor/modules/ext_pow_free_module.py +++ b/src/sage/tensor/modules/ext_pow_free_module.py @@ -44,6 +44,9 @@ from sage.tensor.modules.free_module_tensor import FreeModuleTensor from sage.tensor.modules.free_module_alt_form import FreeModuleAltForm +import six + + class ExtPowerFreeModule(FiniteRankFreeModule): r""" Class for the exterior powers of the dual of a free module of finite rank @@ -320,7 +323,7 @@ def _element_constructor_(self, comp=[], basis=None, name=None, tensor.base_module() is self._fmodule: resu = self.element_class(self._fmodule, 1, name=tensor._name, latex_name=tensor._latex_name) - for basis, comp in tensor._components.iteritems(): + for basis, comp in six.iteritems(tensor._components): resu._components[basis] = comp.copy() return resu else: diff --git a/src/sage/tensor/modules/free_module_alt_form.py b/src/sage/tensor/modules/free_module_alt_form.py index e9630fb102f..a8630788b0e 100644 --- a/src/sage/tensor/modules/free_module_alt_form.py +++ b/src/sage/tensor/modules/free_module_alt_form.py @@ -43,6 +43,9 @@ from sage.tensor.modules.free_module_tensor import FreeModuleTensor from sage.tensor.modules.comp import Components, CompFullyAntiSym +import six + + class FreeModuleAltForm(FreeModuleTensor): r""" Alternating form on a free module of finite rank over a commutative ring. @@ -636,8 +639,8 @@ def wedge(self, other): cmp_r = CompFullyAntiSym(fmodule._ring, basis, rank_r, start_index=fmodule._sindex, output_formatter=fmodule._output_formatter) - for ind_s, val_s in cmp_s._comp.iteritems(): - for ind_o, val_o in cmp_o._comp.iteritems(): + for ind_s, val_s in six.iteritems(cmp_s._comp): + for ind_o, val_o in six.iteritems(cmp_o._comp): ind_r = ind_s + ind_o if len(ind_r) == len(set(ind_r)): # all indices are different cmp_r[[ind_r]] += val_s * val_o diff --git a/src/sage/tensor/modules/free_module_linear_group.py b/src/sage/tensor/modules/free_module_linear_group.py index b4ebc96348d..f71e0c421f5 100644 --- a/src/sage/tensor/modules/free_module_linear_group.py +++ b/src/sage/tensor/modules/free_module_linear_group.py @@ -35,6 +35,9 @@ from sage.tensor.modules.finite_rank_free_module import FiniteRankFreeModule from sage.tensor.modules.free_module_automorphism import FreeModuleAutomorphism +import six + + class FreeModuleLinearGroup(UniqueRepresentation, Parent): r""" General linear group of a free module of finite rank over a commutative @@ -371,7 +374,7 @@ def _element_constructor_(self, comp=[], basis=None, name=None, if tens.tensor_type() == (1,1): resu = self.element_class(self._fmodule, name=tens._name, latex_name=tens._latex_name) - for basis, comp in tens._components.iteritems(): + for basis, comp in six.iteritems(tens._components): resu._components[basis] = comp.copy() # Check whether the tensor is invertible: try: @@ -388,7 +391,7 @@ def _element_constructor_(self, comp=[], basis=None, name=None, if endo.is_endomorphism() and self._fmodule is endo.domain(): resu = self.element_class(self._fmodule, name=endo._name, latex_name=endo._latex_name) - for basis, mat in endo._matrices.iteritems(): + for basis, mat in six.iteritems(endo._matrices): resu.add_comp(basis[0])[:] = mat # Check whether the endomorphism is invertible: try: diff --git a/src/sage/tensor/modules/free_module_morphism.py b/src/sage/tensor/modules/free_module_morphism.py index 7f393430a35..0ba6fb25cd8 100644 --- a/src/sage/tensor/modules/free_module_morphism.py +++ b/src/sage/tensor/modules/free_module_morphism.py @@ -31,6 +31,9 @@ from sage.categories.homset import Hom from sage.tensor.modules.finite_rank_free_module import FiniteRankFreeModule +import six + + class FiniteRankFreeModuleMorphism(Morphism): r""" Homomorphism between free modules of finite rank over a commutative ring. @@ -714,7 +717,7 @@ def _lmul_(self, scalar): True """ resu = self.__class__(self.parent(), 0) # 0 = provisory value - for bases, mat in self._matrices.iteritems(): + for bases, mat in six.iteritems(self._matrices): resu._matrices[bases] = scalar * mat return resu @@ -752,7 +755,7 @@ def __pos__(self): """ resu = self.__class__(self.parent(), 0, is_identity=self._is_identity) # 0 = provisory value - for bases, mat in self._matrices.iteritems(): + for bases, mat in six.iteritems(self._matrices): resu._matrices[bases] = +mat if self._name is not None: resu._name = '+' + self._name @@ -789,7 +792,7 @@ def __neg__(self): """ resu = self.__class__(self.parent(), 0) # 0 = provisory value - for bases, mat in self._matrices.iteritems(): + for bases, mat in six.iteritems(self._matrices): resu._matrices[bases] = -mat if self._name is not None: resu._name = '-' + self._name diff --git a/src/sage/tensor/modules/free_module_tensor.py b/src/sage/tensor/modules/free_module_tensor.py index 4842093f9df..c760bada0f5 100644 --- a/src/sage/tensor/modules/free_module_tensor.py +++ b/src/sage/tensor/modules/free_module_tensor.py @@ -193,6 +193,9 @@ class :class:`~sage.tensor.modules.tensor_free_module.TensorFreeModule`. CompFullyAntiSym) from sage.tensor.modules.tensor_with_indices import TensorWithIndices +import six + + class FreeModuleTensor(ModuleElement): r""" Tensor over a free module of finite rank over a commutative ring. @@ -1431,7 +1434,7 @@ def copy(self): """ resu = self._new_instance() - for basis, comp in self._components.iteritems(): + for basis, comp in six.iteritems(self._components): resu._components[basis] = comp.copy() return resu diff --git a/src/sage/tensor/modules/tensor_free_module.py b/src/sage/tensor/modules/tensor_free_module.py index 08351163b56..cfc713f3759 100644 --- a/src/sage/tensor/modules/tensor_free_module.py +++ b/src/sage/tensor/modules/tensor_free_module.py @@ -68,6 +68,9 @@ FiniteRankFreeModuleMorphism from sage.tensor.modules.free_module_automorphism import FreeModuleAutomorphism +import six + + class TensorFreeModule(FiniteRankFreeModule): r""" Class for the free modules over a commutative ring `R` that are @@ -447,7 +450,7 @@ def _element_constructor_(self, comp=[], basis=None, name=None, resu = self.element_class(self._fmodule, (1,1), name=endo._name, latex_name=endo._latex_name) - for basis, mat in endo._matrices.iteritems(): + for basis, mat in six.iteritems(endo._matrices): resu.add_comp(basis[0])[:] = mat else: raise TypeError("cannot coerce the {}".format(endo) + @@ -467,7 +470,7 @@ def _element_constructor_(self, comp=[], basis=None, name=None, resu = self.element_class(self._fmodule, (0,p), name=form._name, latex_name=form._latex_name, antisym=asym) - for basis, comp in form._components.iteritems(): + for basis, comp in six.iteritems(form._components): resu._components[basis] = comp.copy() elif isinstance(comp, FreeModuleAutomorphism): # coercion of an automorphism to a type-(1,1) tensor: @@ -478,7 +481,7 @@ def _element_constructor_(self, comp=[], basis=None, name=None, " to an element of {}".format(self)) resu = self.element_class(self._fmodule, (1,1), name=autom._name, latex_name=autom._latex_name) - for basis, comp in autom._components.iteritems(): + for basis, comp in six.iteritems(autom._components): resu._components[basis] = comp.copy() else: # Standard construction: diff --git a/src/sage_setup/docbuild/ext/inventory_builder.py b/src/sage_setup/docbuild/ext/inventory_builder.py index 5a98ad8649e..78d0ea4f23a 100644 --- a/src/sage_setup/docbuild/ext/inventory_builder.py +++ b/src/sage_setup/docbuild/ext/inventory_builder.py @@ -9,6 +9,10 @@ from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.util.console import bold from os import path + +import six + + try: from hashlib import md5 except ImportError: @@ -24,7 +28,7 @@ class InventoryBuilder(StandaloneHTMLBuilder): def get_outdated_docs(self): cfgdict = dict((name, self.config[name]) - for (name, desc) in self.config.values.iteritems() + for (name, desc) in six.iteritems(self.config.values) if desc[1] == 'html') self.config_hash = md5(unicode(cfgdict).encode('utf-8')).hexdigest() self.tags_hash = md5(unicode(sorted(self.tags)).encode('utf-8')) \ diff --git a/src/sage_setup/docbuild/ext/multidocs.py b/src/sage_setup/docbuild/ext/multidocs.py index a0474ada5db..63dbb712616 100644 --- a/src/sage_setup/docbuild/ext/multidocs.py +++ b/src/sage_setup/docbuild/ext/multidocs.py @@ -20,6 +20,7 @@ - the javascript index; - the citations. """ +import six from six.moves import cPickle import os import sys @@ -87,14 +88,14 @@ def merge_environment(app, env): env.metadata[ind] = md # merge the citations newcite = {} - for ind, (path, tag) in docenv.citations.iteritems(): + for ind, (path, tag) in six.iteritems(docenv.citations): # TODO: Warn on conflicts newcite[ind] = (fixpath(path), tag) env.citations.update(newcite) # merge the py:module indexes newmodules = {} for ind,(modpath,v1,v2,v3) in ( - docenv.domaindata['py']['modules'].iteritems()): + six.iteritems(docenv.domaindata['py']['modules'])): newmodules[ind] = (fixpath(modpath),v1,v2,v3) env.domaindata['py']['modules'].update(newmodules) app.info(", %s modules"%(len(newmodules))) @@ -136,14 +137,14 @@ def merge_js_index(app): if index is not None: # merge the mappings app.info(" %s js index entries"%(len(index._mapping))) - for (ref, locs) in index._mapping.iteritems(): + for (ref, locs) in six.iteritems(index._mapping): newmapping = set(map(fixpath, locs)) if ref in mapping: newmapping = mapping[ref] | newmapping mapping[unicode(ref)] = newmapping # merge the titles titles = app.builder.indexer._titles - for (res, title) in index._titles.iteritems(): + for (res, title) in six.iteritems(index._titles): titles[fixpath(res)] = title # TODO: merge indexer._objtypes, indexer._objnames as well @@ -244,7 +245,7 @@ def fetch_citation(app, env): cache = cPickle.load(f) app.builder.info("done (%s citations)."%len(cache)) cite = env.citations - for ind, (path, tag) in cache.iteritems(): + for ind, (path, tag) in six.iteritems(cache): if ind not in cite: # don't override local citation cite[ind]=(os.path.join("..", path), tag)