Skip to content

Commit

Permalink
ruff fix UP027 (list comprehension)
Browse files Browse the repository at this point in the history
  • Loading branch information
fchapoton committed Oct 31, 2023
1 parent eb8417b commit 6e0db5b
Show file tree
Hide file tree
Showing 32 changed files with 66 additions and 66 deletions.
4 changes: 2 additions & 2 deletions src/sage/algebras/hecke_algebras/cubic_hecke_algebra.py
Original file line number Diff line number Diff line change
Expand Up @@ -1467,7 +1467,7 @@ def _an_element_(self):
"""
n = self.ngens() + 1
base_ring = self.base_ring()
u, v, w = [base_ring(para) for para in self._cubic_equation_parameters]
u, v, w = (base_ring(para) for para in self._cubic_equation_parameters)
const = (u*~w - v) * self.one()

gens = self.gens()
Expand Down Expand Up @@ -1521,7 +1521,7 @@ def chevie(self):

from sage.interfaces.gap3 import gap3
gap3_function = gap3(gap3_function_str)
na, nb, nc = ['\"%s\"' % indet for indet in self.extension_ring(generic=True).variable_names()]
na, nb, nc = ('\"%s\"' % indet for indet in self.extension_ring(generic=True).variable_names())
return gap3_function(st_number, na, nb, nc)

@cached_method
Expand Down
2 changes: 1 addition & 1 deletion src/sage/algebras/hecke_algebras/cubic_hecke_matrix_rep.py
Original file line number Diff line number Diff line change
Expand Up @@ -890,7 +890,7 @@ def invert_gen(matr):
"""
cfs = ch_algebra.cubic_equation(as_coefficients=True, generic=True)
fac = - 1 / cfs[0]
cf0, cf1, cf2, cf3 = [original_base_ring(cf * fac) for cf in cfs]
cf0, cf1, cf2, cf3 = (original_base_ring(cf * fac) for cf in cfs)

matri = cf1 * matr.parent().one()
matri += cf2 * matr
Expand Down
8 changes: 4 additions & 4 deletions src/sage/calculus/calculus.py
Original file line number Diff line number Diff line change
Expand Up @@ -663,7 +663,7 @@ def symbolic_sum(expression, v, a, b, algorithm='maxima', hold=False):
return result.sage()

elif algorithm == 'sympy':
expression,v,a,b = [expr._sympy_() for expr in (expression, v, a, b)]
expression,v,a,b = (expr._sympy_() for expr in (expression, v, a, b))
from sympy import summation
from sage.interfaces.sympy import sympy_init
sympy_init()
Expand Down Expand Up @@ -920,7 +920,7 @@ def symbolic_product(expression, v, a, b, algorithm='maxima', hold=False):
return result.sage()

elif algorithm == 'sympy':
expression,v,a,b = [expr._sympy_() for expr in (expression, v, a, b)]
expression,v,a,b = (expr._sympy_() for expr in (expression, v, a, b))
from sympy import product as sproduct
from sage.interfaces.sympy import sympy_init
sympy_init()
Expand Down Expand Up @@ -1744,7 +1744,7 @@ def laplace(ex, t, s, algorithm='maxima'):
return ex.parent()(ex._maxima_().laplace(var(t), var(s)))

elif algorithm == 'sympy':
ex_sy, t, s = [expr._sympy_() for expr in (ex, t, s)]
ex_sy, t, s = (expr._sympy_() for expr in (ex, t, s))
from sympy import laplace_transform
from sage.interfaces.sympy import sympy_init
sympy_init()
Expand Down Expand Up @@ -1923,7 +1923,7 @@ def inverse_laplace(ex, s, t, algorithm='maxima'):
return ex.parent()(ex._maxima_().ilt(var(s), var(t)))

elif algorithm == 'sympy':
ex_sy, s, t = [expr._sympy_() for expr in (ex, s, t)]
ex_sy, s, t = (expr._sympy_() for expr in (ex, s, t))
from sympy import inverse_laplace_transform
from sage.interfaces.sympy import sympy_init
sympy_init()
Expand Down
6 changes: 3 additions & 3 deletions src/sage/combinat/designs/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -2127,7 +2127,7 @@ def QDM_21_5_1_1_1():
[0,14,7,0,None]]

for R in zip(*M):
a,b,c,d,e = [G(x) if x is not None else None for x in R]
a,b,c,d,e = (G(x) if x is not None else None for x in R)
Mb.append([a,b,c,d,e])

Mb.append([16*c,
Expand Down Expand Up @@ -2265,7 +2265,7 @@ def QDM_33_6_1_1_1():

times4 = lambda x : None if x is None else 4*x
for R in zip(*M):
a,b,c,d,e,f = [None if x is None else G(x) for x in R]
a,b,c,d,e,f = (None if x is None else G(x) for x in R)
for i in range(5):
Mb.append([a,b,c,d,e,f])
a,b,c,d,e,f = map(times4,[e,a,b,c,d,f])
Expand Down Expand Up @@ -3467,7 +3467,7 @@ def DM_39_6_1():
for i in range(3):
Mb.append([ a, b, c, d, e, f])
Mb.append([-a,-b,-c,-d,-e,-f])
a,b,c,d,e,f = [16*x for x in [c,a,b,f,d,e]]
a,b,c,d,e,f = (16*x for x in [c,a,b,f,d,e])

return G,Mb

Expand Down
2 changes: 1 addition & 1 deletion src/sage/combinat/permutation.py
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ def __classcall_private__(cls, l, check=True):
return RSK_inverse(*l, output='permutation')
elif isinstance(l, (tuple, list)) and len(l) == 2 and \
all(isinstance(x, list) for x in l):
P,Q = [Tableau(_) for _ in l]
P,Q = (Tableau(_) for _ in l)
return RSK_inverse(P, Q, 'permutation')
# if it's a tuple or nonempty list of tuples, also assume cycle
# notation
Expand Down
28 changes: 14 additions & 14 deletions src/sage/geometry/hyperbolic_space/hyperbolic_geodesic.py
Original file line number Diff line number Diff line change
Expand Up @@ -1110,7 +1110,7 @@ def reflection_involution(self):
"""

x, y = [real(k.coordinates()) for k in self.ideal_endpoints()]
x, y = (real(k.coordinates()) for k in self.ideal_endpoints())
if x == infinity:
M = matrix([[1, -2*y], [0, -1]])
elif y == infinity:
Expand Down Expand Up @@ -1188,8 +1188,8 @@ def plot(self, boundary=True, **options):
opts = {'axes': False, 'aspect_ratio': 1}
opts.update(self.graphics_options())
opts.update(options)
end_1, end_2 = [CC(k.coordinates()) for k in self.endpoints()]
bd_1, bd_2 = [CC(k.coordinates()) for k in self.ideal_endpoints()]
end_1, end_2 = (CC(k.coordinates()) for k in self.endpoints())
bd_1, bd_2 = (CC(k.coordinates()) for k in self.ideal_endpoints())
if (abs(real(end_1) - real(end_2)) < EPSILON) \
or CC(infinity) in [end_1, end_2]: # on same vertical line
# If one of the endpoints is infinity, we replace it with a
Expand Down Expand Up @@ -1224,7 +1224,7 @@ def plot(self, boundary=True, **options):
# computations below compute the projection of the
# geodesic to the real line, and then draw a little
# to the left and right of the projection.
shadow_1, shadow_2 = [real(k) for k in [end_1, end_2]]
shadow_1, shadow_2 = (real(k) for k in [end_1, end_2])
midpoint = (shadow_1 + shadow_2)/2
length = abs(shadow_1 - shadow_2)
bd_dict = {'bd_min': midpoint - length, 'bd_max': midpoint +
Expand Down Expand Up @@ -1479,8 +1479,8 @@ def intersection(self, other):
# Get endpoints and ideal endpoints
i_start_1, i_end_1 = sorted(self.ideal_endpoints(), key=str)
i_start_2, i_end_2 = sorted(other.ideal_endpoints(), key=str)
start_1, end_1 = [CC(x.coordinates()) for x in self.endpoints()]
start_2, end_2 = [CC(x.coordinates()) for x in other.endpoints()]
start_1, end_1 = (CC(x.coordinates()) for x in self.endpoints())
start_2, end_2 = (CC(x.coordinates()) for x in other.endpoints())
# sort the geodesic endpoints according to start_1.real() < end_1.real() and if start_1.real() == end_1.real()
# then start_1.imag() < end_1.imag()
if start_1.real() > end_1.real(): # enforce
Expand Down Expand Up @@ -1934,8 +1934,8 @@ def angle(self, other): # UHP
if abs(a2 - a1) < EPSILON or abs(b2 - b1) < EPSILON:
raise ValueError("intersecting geodesic is a point")

p1, p2 = [p.coordinates() for p in self.ideal_endpoints()]
q1, q2 = [p.coordinates() for p in other.ideal_endpoints()]
p1, p2 = (p.coordinates() for p in self.ideal_endpoints())
q1, q2 = (p.coordinates() for p in other.ideal_endpoints())

# Check if both geodesics are lines. All lines intersect at
# ``Infinity``, but the angle is always zero.
Expand Down Expand Up @@ -1979,7 +1979,7 @@ def angle(self, other): # UHP

# Transform into a line.
t = HyperbolicGeodesicUHP._crossratio_matrix(p1, (p1 + p2) / 2, p2)
q1, q2 = [moebius_transform(t, q) for q in [q1, q2]]
q1, q2 = (moebius_transform(t, q) for q in [q1, q2])

# Calculate the angle.
return arccos(abs(q1 + q2) / abs(q2 - q1))
Expand Down Expand Up @@ -2246,8 +2246,8 @@ def plot(self, boundary=True, **options):
opts = {'axes': False, 'aspect_ratio': 1}
opts.update(self.graphics_options())
opts.update(options)
end_1, end_2 = [CC(k.coordinates()) for k in self.endpoints()]
bd_1, bd_2 = [CC(k.coordinates()) for k in self.ideal_endpoints()]
end_1, end_2 = (CC(k.coordinates()) for k in self.endpoints())
bd_1, bd_2 = (CC(k.coordinates()) for k in self.ideal_endpoints())
# Check to see if it's a line
if abs(bd_1 + bd_2) < EPSILON:
pic = bezier_path([[(real(end_1), imag(end_1)), (real(end_2), imag(end_2))]], **opts)
Expand Down Expand Up @@ -2330,7 +2330,7 @@ def map_pt(pt):
if pt in CC:
return CC(pt)
return CC(*pt)
end_1, end_2 = [map_pt(k.coordinates()) for k in self.endpoints()]
end_1, end_2 = (map_pt(k.coordinates()) for k in self.endpoints())
pic = bezier_path([[(real(end_1), imag(end_1)),
(real(end_2), imag(end_2))]], **opts)
if boundary:
Expand Down Expand Up @@ -2392,7 +2392,7 @@ def _plot_vertices(self, points=75):
from sage.arith.srange import xsrange

x = SR.var('x')
v1, u2 = [vector(k.coordinates()) for k in self.endpoints()]
v1, u2 = (vector(k.coordinates()) for k in self.endpoints())
# Lorentzian Gram Shmidt. The original vectors will be
# u1, u2 and the orthogonal ones will be v1, v2. Except
# v1 = u1, and I don't want to declare another variable,
Expand Down Expand Up @@ -2436,7 +2436,7 @@ def plot(self, show_hyperboloid=True, **graphics_options):
x = SR.var('x')
opts = self.graphics_options()
opts.update(graphics_options)
v1, u2 = [vector(k.coordinates()) for k in self.endpoints()]
v1, u2 = (vector(k.coordinates()) for k in self.endpoints())
# Lorentzian Gram Shmidt. The original vectors will be
# u1, u2 and the orthogonal ones will be v1, v2. Except
# v1 = u1, and I don't want to declare another variable,
Expand Down
4 changes: 2 additions & 2 deletions src/sage/geometry/hyperbolic_space/hyperbolic_isometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -820,10 +820,10 @@ def fixed_point_set(self): # UHP
return self.domain().get_geodesic(pt(p_1), pt(p_2))

try:
p, q = [M.eigenvectors_right()[k][1][0] for k in range(2)]
p, q = (M.eigenvectors_right()[k][1][0] for k in range(2))
except IndexError:
M = M.change_ring(RDF)
p, q = [M.eigenvectors_right()[k][1][0] for k in range(2)]
p, q = (M.eigenvectors_right()[k][1][0] for k in range(2))

pts = []
if p[1] == 0:
Expand Down
2 changes: 1 addition & 1 deletion src/sage/geometry/polyhedron/base5.py
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ def _test_bipyramid(self, tester=None, **options):
R = self.base_ring()
a = (R(1),) + tuple(self.center())
b = (R(-1),) + tuple(self.center())
c, d = [tuple(v) for v in cert]
c, d = (tuple(v) for v in cert)
tester.assertEqual(sorted([a, b]), sorted([c, d]))

def prism(self):
Expand Down
2 changes: 1 addition & 1 deletion src/sage/geometry/polyhedron/plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -852,7 +852,7 @@ def defining_equation(): # corresponding to a polygon
face_inequalities.append(facet_equation)
vertices = cyclic_sort_vertices_2d(vertices)
if len(vertices) >= 3:
v0, v1, v2 = [vector(v) for v in vertices[:3]]
v0, v1, v2 = (vector(v) for v in vertices[:3])
normal = (v2 - v0).cross_product(v1 - v0)
if normal.dot_product(facet_equation.A()) < 0:
vertices.reverse()
Expand Down
2 changes: 1 addition & 1 deletion src/sage/graphs/bipartite_graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -1755,7 +1755,7 @@ def load_afile(self, fname):
return None

# read header information
num_cols, num_rows = [int(_) for _ in fi.readline().split()]
num_cols, num_rows = (int(_) for _ in fi.readline().split())
# next are max_col_degree, max_row_degree, not used
_ = [int(_) for _ in fi.readline().split()]
col_degrees = [int(_) for _ in fi.readline().split()]
Expand Down
8 changes: 4 additions & 4 deletions src/sage/graphs/generators/classical_geometries.py
Original file line number Diff line number Diff line change
Expand Up @@ -535,12 +535,12 @@ def NonisotropicOrthogonalPolarGraph(m, q, sign="+", perp=None):
deg = (q**n - e)*(q**(n - 1) + e) # k
S = [libgap.Elements(libgap.Basis(x))[0]
for x in libgap.Elements(libgap.Subspaces(W, 1))]
(V,) = [x for x in libgap.Orbits(g, S, libgap.OnLines)
if len(x) == nvert]
(V,) = (x for x in libgap.Orbits(g, S, libgap.OnLines)
if len(x) == nvert)
gp = libgap.Action(g, V, libgap.OnLines) # make a permutation group
h = libgap.Stabilizer(gp, 1)
(Vh,) = [x for x in libgap.Orbits(h, libgap.Orbit(gp, 1))
if len(x) == deg]
(Vh,) = (x for x in libgap.Orbits(h, libgap.Orbit(gp, 1))
if len(x) == deg)
Vh = Vh[0]
L = libgap.Orbit(gp, [1, Vh], libgap.OnSets)
G = Graph()
Expand Down
2 changes: 1 addition & 1 deletion src/sage/graphs/generators/random.py
Original file line number Diff line number Diff line change
Expand Up @@ -1957,7 +1957,7 @@ def rotate_word_to_next_occurrence(word):
word2 = rotate_word_to_next_occurrence(word)
if len(word2) >= 5:
word = [word2[0]] + word2[4:]
in1, in2, in3 = [u[1] for u in word2[:3]]
in1, in2, in3 = (u[1] for u in word2[:3])
edges.append([in1, in3]) # edge 'in1,in3'
idx = embedding[in1].index(in2)
embedding[in1].insert(idx, in3)
Expand Down
6 changes: 3 additions & 3 deletions src/sage/graphs/generators/smallgraphs.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ def HarriesGraph(embedding=1):
# Vertices from o[1]. These are actually the "edges" of the copies of
# Petersen.
for v in o[1]:
p1, p2 = [gpos[x] for x in g.neighbors(v) if x in o[0]]
p1, p2 = (gpos[x] for x in g.neighbors(v) if x in o[0])
gpos[v] = ((p1[0] + p2[0])/2, (p1[1] + p2[1])/2)

# 15 vertices from o[2]
Expand Down Expand Up @@ -4816,8 +4816,8 @@ def JankoKharaghaniGraph(v):
D = ("--1-11", "-11-1-", "11-1--", "--11-1", "11---1", "1--11-")
E = ("-1--11", "1-1--1", "-11-1-", "---111", "1-11--", "11-1--")
F = ("-1-1-1", "11--1-", "--111-", "1-11--", "-11--1", "1---11")
B, C, D, E, F = [matrix([map({'1': 1, '-': -1}.get, r) for r in m])
for m in [B, C, D, E, F]]
B, C, D, E, F = (matrix([map({'1': 1, '-': -1}.get, r) for r in m])
for m in [B, C, D, E, F])

H = [A, B, C, D, E, F]
H = [[-x for x in H[6-i:]] + H[:6-i] for i in range(6)]
Expand Down
2 changes: 1 addition & 1 deletion src/sage/graphs/graph_generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -1171,7 +1171,7 @@ def nauty_genbg(self, options="", debug=False):
for s in msg.split(' '):
if s.startswith('n='):
from sage.rings.integer import Integer
n1, n2 = [Integer(t) for t in s[2:].split('+') if t.isdigit()]
n1, n2 = (Integer(t) for t in s[2:].split('+') if t.isdigit())
partition = [set(range(n1)), set(range(n1, n1 + n2))]
break
else:
Expand Down
2 changes: 1 addition & 1 deletion src/sage/misc/package_dir.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def read_distribution(src_file):
line = line[1:].lstrip()
kind = "sage_setup:"
if line.startswith(kind):
key, _, value = [s.strip() for s in line[len(kind):].partition('=')]
key, _, value = (s.strip() for s in line[len(kind):].partition('='))
if key == "distribution":
return value
return ''
Expand Down
4 changes: 2 additions & 2 deletions src/sage/modular/local_comp/liftings.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,13 @@ def lift_to_gamma1(g, m, n):
"""
if m == 1:
return [ZZ.one(), ZZ.zero(), ZZ.zero(), ZZ.one()]
a, b, c, d = [ZZ(x) for x in g]
a, b, c, d = (ZZ(x) for x in g)
det = (a * d - b * c) % m
if det != 1:
raise ValueError("Determinant is {0} mod {1}, should be 1".format(det, m))
c2 = crt(c, 0, m, n)
d2 = crt(d, 1, m, n)
a3,b3,c3,d3 = [ZZ(_) for _ in lift_to_sl2z(c2, d2, m * n)]
a3,b3,c3,d3 = (ZZ(_) for _ in lift_to_sl2z(c2, d2, m * n))
r = (a3*b - b3*a) % m
return [a3 + r * c3, b3 + r * d3, c3, d3]

Expand Down
4 changes: 2 additions & 2 deletions src/sage/modular/local_comp/local_comp.py
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ def characters(self):

if len(gs) == 1:
# This is always the case if p != 2
chi1, chi2 = [G.extend_character(n, self.central_character(), [x]) for x in gvals]
chi1, chi2 = (G.extend_character(n, self.central_character(), [x]) for x in gvals)
else:
# 2-adic cases, conductor >= 64. Here life is complicated
# because the quotient (O_K* / p^n)^* / (image of Z_2^*) is not
Expand Down Expand Up @@ -871,7 +871,7 @@ def characters(self):
c1q, c2q = flatten([[x]*e for x,e in theta_poly.roots(G.base_ring())])

if len(qs) == 1:
chi1, chi2 = [G.extend_character(n, self.central_character(), [x]) for x in [c1q, c2q]]
chi1, chi2 = (G.extend_character(n, self.central_character(), [x]) for x in [c1q, c2q])

else:
assert p == 3
Expand Down
6 changes: 3 additions & 3 deletions src/sage/plot/contour_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -891,7 +891,7 @@ def f(x,y): return cos(x) + sin(y)
F, ranges = setup_for_eval_on_grid(ev, [xrange, yrange],
options['plot_points'])
h = F[0]
xrange, yrange = [r[:2] for r in ranges]
xrange, yrange = (r[:2] for r in ranges)

xy_data_array = [[h(x, y) for x in xsrange(*ranges[0],
include_endpoint=True)]
Expand Down Expand Up @@ -1000,7 +1000,7 @@ def f(x,y): return cos(x) + sin(y)
F, ranges = setup_for_eval_on_grid(ev, [xrange, yrange],
options['plot_points'])
h = F[0]
xrange, yrange = [r[:2] for r in ranges]
xrange, yrange = (r[:2] for r in ranges)

# ...and a function whose values are shifted towards
# z0 by "tol".
Expand Down Expand Up @@ -1690,7 +1690,7 @@ def region_plot(f, xrange, yrange, **options):
f_all, ranges = setup_for_eval_on_grid(feqs + f,
[xrange, yrange],
plot_points)
xrange, yrange = [r[:2] for r in ranges]
xrange, yrange = (r[:2] for r in ranges)

xy_data_arrays = numpy.asarray([[[func(x, y)
for x in xsrange(*ranges[0],
Expand Down
2 changes: 1 addition & 1 deletion src/sage/plot/density_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ def f(x,y): return x**2 * cos(x*y)
from sage.rings.real_double import RDF
g, ranges = setup_for_eval_on_grid([f], [xrange, yrange], options['plot_points'])
g = g[0]
xrange, yrange = [r[:2] for r in ranges]
xrange, yrange = (r[:2] for r in ranges)

xy_data_array = [[RDF(g(x,y)) for x in xsrange(*ranges[0], include_endpoint=True)]
for y in xsrange(*ranges[1], include_endpoint=True)]
Expand Down
2 changes: 1 addition & 1 deletion src/sage/plot/plot3d/plot_field3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ def plot_vector_field3d(functions, xrange, yrange, zrange,
Graphics3d Object
"""
(ff, gg, hh), ranges = setup_for_eval_on_grid(functions, [xrange, yrange, zrange], plot_points)
xpoints, ypoints, zpoints = [srange(*r, include_endpoint=True) for r in ranges]
xpoints, ypoints, zpoints = (srange(*r, include_endpoint=True) for r in ranges)
points = [vector((i, j, k)) for i in xpoints for j in ypoints for k in zpoints]
vectors = [vector((ff(*point), gg(*point), hh(*point))) for point in points]

Expand Down
2 changes: 1 addition & 1 deletion src/sage/quadratic_forms/binary_qf.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ def __init__(self, a, b=None, c=None):
elif (isinstance(a, MPolynomial) and a.is_homogeneous() and a.base_ring() == ZZ
and a.degree() == 2 and a.parent().ngens() == 2):
x, y = a.parent().gens()
a, b, c = [a.monomial_coefficient(mon) for mon in [x**2, x*y, y**2]]
a, b, c = (a.monomial_coefficient(mon) for mon in [x**2, x*y, y**2])
elif isinstance(a, pari_gen) and a.type() in ('t_QFI', 't_QFR', 't_QFB'):
# a has 3 or 4 components
a, b, c = a[0], a[1], a[2]
Expand Down
2 changes: 1 addition & 1 deletion src/sage/quadratic_forms/ternary_qf.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ def __init__(self, v):
if len(v) != 6:
# Check we have six coefficients
raise ValueError("Ternary quadratic form must be given by a list of six coefficients")
self._a, self._b, self._c, self._r, self._s, self._t = [ZZ(x) for x in v]
self._a, self._b, self._c, self._r, self._s, self._t = (ZZ(x) for x in v)
self._automorphisms = None
self._number_of_automorphisms = None

Expand Down
Loading

0 comments on commit 6e0db5b

Please sign in to comment.