Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
py3 use six.iteritems in sat, symbolic, tensor and sage_setup
Browse files Browse the repository at this point in the history
  • Loading branch information
Frédéric Chapoton committed Feb 9, 2017
1 parent 375d4ee commit 2a2314c
Show file tree
Hide file tree
Showing 12 changed files with 62 additions and 29 deletions.
11 changes: 7 additions & 4 deletions src/sage/sat/boolean_polynomials.py
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -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

Expand Down Expand Up @@ -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

Expand All @@ -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

Expand Down
7 changes: 5 additions & 2 deletions src/sage/sat/converters/polybori.py
Expand Up @@ -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
Expand Down Expand Up @@ -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))
Expand Down
7 changes: 4 additions & 3 deletions src/sage/symbolic/units.py
Expand Up @@ -91,6 +91,7 @@

# standard Python libraries
import re
import six

# Sage library
from .ring import SR
Expand Down Expand Up @@ -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
Expand All @@ -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:
Expand Down
7 changes: 5 additions & 2 deletions src/sage/tensor/differential_form_element.py
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion src/sage/tensor/modules/ext_pow_free_module.py
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
7 changes: 5 additions & 2 deletions src/sage/tensor/modules/free_module_alt_form.py
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
7 changes: 5 additions & 2 deletions src/sage/tensor/modules/free_module_linear_group.py
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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:
Expand Down
9 changes: 6 additions & 3 deletions src/sage/tensor/modules/free_module_morphism.py
Expand Up @@ -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.
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion src/sage/tensor/modules/free_module_tensor.py
Expand Up @@ -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.
Expand Down Expand Up @@ -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

Expand Down
9 changes: 6 additions & 3 deletions src/sage/tensor/modules/tensor_free_module.py
Expand Up @@ -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
Expand Down Expand Up @@ -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) +
Expand All @@ -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:
Expand All @@ -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:
Expand Down
6 changes: 5 additions & 1 deletion src/sage_setup/docbuild/ext/inventory_builder.py
Expand Up @@ -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:
Expand All @@ -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')) \
Expand Down
11 changes: 6 additions & 5 deletions src/sage_setup/docbuild/ext/multidocs.py
Expand Up @@ -20,6 +20,7 @@
- the javascript index;
- the citations.
"""
import six
from six.moves import cPickle
import os
import sys
Expand Down Expand Up @@ -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)))
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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)

Expand Down

0 comments on commit 2a2314c

Please sign in to comment.