--- Begin Message ---
Source: python-pyscss
Version: 1.4.0-2
Severity: serious
Tags: ftbfs
https://buildd.debian.org/status/logs.php?pkg=python-pyscss&ver=1.4.0-2%2Bb1
...
============================= test session starts ==============================
platform linux -- Python 3.11.0+, pytest-7.1.2, pluggy-1.0.0+repack
rootdir: /<<PKGBUILDDIR>>/scss
collected 249 items / 1 skipped
../../../scss/tests/test_cli.py . [ 0%]
../../../scss/tests/test_expression.py FFFFF [ 2%]
../../../scss/tests/test_interactive.py .. [ 3%]
../../../scss/tests/test_misc.py FFF... [ 5%]
../../../scss/tests/test_types.py ....... [ 8%]
../../../scss/tests/extension/test_core.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 20%]
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 33%]
../../../scss/tests/extension/test_extra.py .... [ 34%]
../../../scss/tests/extension/compass/test_gradients.py .x [ 35%]
../../../scss/tests/extension/compass/test_helpers.py FFFFFFFFFFFFFFFF [ 42%]
../../../scss/tests/extension/compass/test_images.py FFF [ 43%]
../../../scss/tests/files/bugs/append.scss F [ 43%]
../../../scss/tests/files/bugs/argspec-named-arguments.scss F [ 44%]
../../../scss/tests/files/bugs/argspec-slurpy-arguments.scss F [ 44%]
../../../scss/tests/files/bugs/at-rules-1.scss F [ 44%]
../../../scss/tests/files/bugs/at-rules-2.scss . [ 45%]
../../../scss/tests/files/bugs/at-rules-compressed-semicolon.scss F [ 45%]
../../../scss/tests/files/bugs/at-rules-duplicate-media-queries.scss . [ 46%]
../../../scss/tests/files/bugs/at-rules-interpolation.scss F [ 46%]
../../../scss/tests/files/bugs/base64url.scss F [ 46%]
../../../scss/tests/files/bugs/colors-preserve-names.scss F [ 47%]
../../../scss/tests/files/bugs/division-in-assignment.scss . [ 47%]
../../../scss/tests/files/bugs/division-vs-literal-slash.scss . [ 48%]
../../../scss/tests/files/bugs/extend-child-selector.scss F [ 48%]
../../../scss/tests/files/bugs/extend-common-prefix-complex.scss F [ 48%]
../../../scss/tests/files/bugs/extend-common-prefix.scss . [ 49%]
../../../scss/tests/files/bugs/extend-selector-order.scss F [ 49%]
../../../scss/tests/files/bugs/for-to-vs-through.scss . [ 50%]
../../../scss/tests/files/bugs/if-with-parentheses.scss F [ 50%]
../../../scss/tests/files/bugs/interpolation-timing.scss F [ 51%]
../../../scss/tests/files/bugs/names-equivalence.scss F [ 51%]
../../../scss/tests/files/bugs/selectors-adjacent-is-not-include.scss . [ 51%]
../../../scss/tests/files/bugs/trailing-combinators.scss F [ 52%]
../../../scss/tests/files/bugs/unit-float-precision.scss F [ 52%]
../../../scss/tests/files/bugs/variables-font-face-default.scss F [ 53%]
../../../scss/tests/files/compass/current-color.scss F [ 53%]
../../../scss/tests/files/compass/gradients.scss F [ 53%]
../../../scss/tests/files/general/000-smoketest.scss F [ 54%]
../../../scss/tests/files/general/css-calc.scss . [ 54%]
../../../scss/tests/files/general/each-destructuring-2.scss F [ 55%]
../../../scss/tests/files/general/each-destructuring-3.scss F [ 55%]
../../../scss/tests/files/general/each-destructuring.scss F [ 55%]
../../../scss/tests/files/general/empty-list-included.scss F [ 56%]
../../../scss/tests/files/general/global-variable-exists.scss F [ 56%]
../../../scss/tests/files/general/if-lazy.scss F [ 57%]
../../../scss/tests/files/general/interpolation-acid.scss F [ 57%]
../../../scss/tests/files/general/interpolation-mixin-name.scss F [ 57%]
../../../scss/tests/files/general/maps-complex-keys.scss F [ 58%]
../../../scss/tests/files/general/maps-example-lists.scss F [ 58%]
../../../scss/tests/files/general/maps-example.scss F [ 59%]
../../../scss/tests/files/general/names-loop-variable.scss F [ 59%]
../../../scss/tests/files/general/null-values.scss F [ 59%]
../../../scss/tests/files/general/scoping-mixin-2.scss F [ 60%]
../../../scss/tests/files/general/scoping-mixin.scss F [ 60%]
../../../scss/tests/files/general/scoping-nested-2.scss F [ 61%]
../../../scss/tests/files/general/scoping-nested.scss F [ 61%]
../../../scss/tests/files/general/slurpy-keyword-args.scss F [ 61%]
../../../scss/tests/files/kronuz/args.scss F [ 62%]
../../../scss/tests/files/kronuz/functions-context.scss F [ 62%]
../../../scss/tests/files/kronuz/image-colors.scss F [ 63%]
../../../scss/tests/files/kronuz/imports-unused.scss F [ 63%]
../../../scss/tests/files/kronuz/linear-gradient.scss F [ 63%]
../../../scss/tests/files/kronuz/lists-circular-nth.scss F [ 64%]
../../../scss/tests/files/kronuz/lists-operations.scss . [ 64%]
../../../scss/tests/files/kronuz/mixin-varargs.scss F [ 65%]
../../../scss/tests/files/kronuz/mixins-context.scss F [ 65%]
../../../scss/tests/files/kronuz/mul-em.scss . [ 65%]
../../../scss/tests/files/kronuz/mul-list.scss . [ 66%]
../../../scss/tests/files/kronuz/order-test-each.scss . [ 66%]
../../../scss/tests/files/kronuz/order-test-for.scss . [ 67%]
../../../scss/tests/files/kronuz/order-test.scss F [ 67%]
../../../scss/tests/files/kronuz/reversed-for.scss . [ 67%]
../../../scss/tests/files/kronuz/reversed-range.scss F [ 68%]
../../../scss/tests/files/kronuz/rgba-colors.scss F [ 68%]
../../../scss/tests/files/kronuz/scope-loop-variables.scss F [ 69%]
../../../scss/tests/files/kronuz/scoping-control.scss F [ 69%]
../../../scss/tests/files/kronuz/selectors-append-nest.scss F [ 69%]
../../../scss/tests/files/kronuz/selectors-nest.scss F [ 70%]
../../../scss/tests/files/kronuz/selectors-special.scss F [ 70%]
../../../scss/tests/files/kronuz/sprite-map.scss F [ 71%]
../../../scss/tests/files/kronuz/style-nested.scss F [ 71%]
../../../scss/tests/files/kronuz/while-test.scss . [ 71%]
../../../scss/tests/files/original-doctests/000-general.scss F [ 72%]
../../../scss/tests/files/original-doctests/001-variables.scss F [ 72%]
../../../scss/tests/files/original-doctests/002-nesting-children.scss F [ 73%]
../../../scss/tests/files/original-doctests/003-nesting-children-2.scss F [ 73%]
[ 73%]
../../../scss/tests/files/original-doctests/004-nesting-children-3.scss F [ 73%]
[ 73%]
../../../scss/tests/files/original-doctests/005-extends.scss . [ 74%]
../../../scss/tests/files/original-doctests/006-extends-2.scss . [ 74%]
../../../scss/tests/files/original-doctests/007-extends-3.scss F [ 75%]
../../../scss/tests/files/original-doctests/008-extends-4.scss F [ 75%]
../../../scss/tests/files/original-doctests/009-extends-5.scss F [ 75%]
../../../scss/tests/files/original-doctests/010-math.scss . [ 76%]
../../../scss/tests/files/original-doctests/011-math-2.scss . [ 76%]
../../../scss/tests/files/original-doctests/012-math-3.scss . [ 77%]
../../../scss/tests/files/original-doctests/013-nesting.scss F [ 77%]
../../../scss/tests/files/original-doctests/014-nesting-2.scss F [ 77%]
../../../scss/tests/files/original-doctests/015-nesting-3.scss . [ 78%]
../../../scss/tests/files/original-doctests/016-variables.scss F [ 78%]
../../../scss/tests/files/original-doctests/017-interpolation.scss F [ 79%]
../../../scss/tests/files/original-doctests/018-mixins.scss F [ 79%]
../../../scss/tests/files/original-doctests/019-mixins-2.scss F [ 79%]
../../../scss/tests/files/original-doctests/020-mixins-3.scss F [ 80%]
../../../scss/tests/files/original-doctests/021-extend.scss F [ 80%]
../../../scss/tests/files/original-doctests/022-extend-multiple.scss . [ 81%]
../../../scss/tests/files/original-doctests/023-extend-multiple-2.scss F [ 81%]
[ 81%]
../../../scss/tests/files/original-doctests/024-extend-placeholder.scss F [ 81%]
[ 81%]
../../../scss/tests/files/original-doctests/025-forum.scss . [ 82%]
../../../scss/tests/files/original-doctests/026-forum-2.scss F [ 82%]
../../../scss/tests/files/original-doctests/027-forum-3.scss . [ 83%]
../../../scss/tests/files/original-doctests/028-errors.scss F [ 83%]
../../../scss/tests/files/original-doctests/029-errors-2.scss F [ 83%]
../../../scss/tests/files/original-doctests/030-errors-3.scss . [ 84%]
../../../scss/tests/files/original-doctests/031-test.scss F [ 84%]
../../../scss/tests/files/original-doctests/032-test-2.scss F [ 85%]
../../../scss/tests/files/original-doctests/033-test-3.scss F [ 85%]
../../../scss/tests/files/original-doctests/034-test-4.scss F [ 85%]
../../../scss/tests/files/original-doctests/035-test-5.scss F [ 86%]
../../../scss/tests/files/original-doctests/036-test-6.scss F [ 86%]
../../../scss/tests/files/original-doctests/037-test-7.scss F [ 87%]
../../../scss/tests/files/original-doctests/038-test-8.scss F [ 87%]
../../../scss/tests/files/original-doctests/039-hover-extend.scss F [ 87%]
../../../scss/tests/files/original-doctests/039-math-4.scss . [ 88%]
../../../scss/tests/files/original-doctests/040-complex-sequence-extend.scss F
[ 88%]
[ 88%]
../../../scss/tests/files/original-doctests/041-another-extend.scss . [ 89%]
../../../scss/tests/files/regressions/args-vars.scss F [ 89%]
../../../scss/tests/files/regressions/argspec-default-arguments.scss F [ 89%]
../../../scss/tests/files/regressions/argspec-no-arguments.scss F [ 90%]
../../../scss/tests/files/regressions/argspec-trailing-comma.scss F [ 90%]
../../../scss/tests/files/regressions/interpolation-2.scss F [ 91%]
../../../scss/tests/files/regressions/interpolation.scss F [ 91%]
../../../scss/tests/files/regressions/issue-10.scss F [ 91%]
../../../scss/tests/files/regressions/issue-110.scss F [ 92%]
../../../scss/tests/files/regressions/issue-2.scss F [ 92%]
../../../scss/tests/files/regressions/issue-21.scss F [ 93%]
../../../scss/tests/files/regressions/issue-258.scss F [ 93%]
../../../scss/tests/files/regressions/issue-32.scss . [ 93%]
../../../scss/tests/files/regressions/issue-334-a.scss F [ 94%]
../../../scss/tests/files/regressions/issue-334-b.scss F [ 94%]
../../../scss/tests/files/regressions/issue-334-c.scss F [ 95%]
../../../scss/tests/files/regressions/issue-334-d.scss F [ 95%]
../../../scss/tests/files/regressions/issue-334-e.scss F [ 95%]
../../../scss/tests/files/regressions/issue-334-f.scss F [ 96%]
../../../scss/tests/files/regressions/issue-334-g.scss F [ 96%]
../../../scss/tests/files/regressions/issue-334-h.scss F [ 97%]
../../../scss/tests/files/regressions/issue-4.scss . [ 97%]
../../../scss/tests/files/regressions/issue-40.scss F [ 97%]
../../../scss/tests/files/regressions/issue-5.scss F [ 98%]
../../../scss/tests/files/regressions/issue-52.scss F [ 98%]
../../../scss/tests/files/regressions/issue-6.scss F [ 99%]
../../../scss/tests/files/regressions/issue-7.scss . [ 99%]
../../../scss/tests/files/regressions/nth-inside-each.scss F [100%]
=================================== FAILURES ===================================
__________________________ test_reference_operations ___________________________
def test_reference_operations():
"""Test the example expressions in the reference document:
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#operations
"""
# TODO: break this into its own file and add the entire reference guide
# Need to build the calculator manually to get at its namespace, and
need
# to use calculate() instead of evaluate_expression() so interpolation
# works
ns = CoreExtension.namespace.derive()
calc = Calculator(ns).calculate
# Simple example
> assert calc('1in + 8pt') == Number(1.1111111111111112, "in")
../../../scss/tests/test_expression.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../scss/calculator.py:116: in calculate
result = self.evaluate_expression(expression, divide=divide)
../../../scss/calculator.py:134: in evaluate_expression
ast = self.parse_expression(expr)
../../../scss/calculator.py:166: in parse_expression
parser = SassExpression(SassExpressionScanner(expr))
../../../scss/grammar/expression.py:104: in __init__
self.patterns.append((t, re.compile(p)))
/usr/lib/python3.11/re/__init__.py:227: in compile
return _compile(pattern, flags)
/usr/lib/python3.11/re/__init__.py:294: in _compile
p = _compiler.compile(pattern, flags)
/usr/lib/python3.11/re/_compiler.py:743: in compile
p = _parser.parse(p, flags)
/usr/lib/python3.11/re/_parser.py:980: in parse
p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
/usr/lib/python3.11/re/_parser.py:455: in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
/usr/lib/python3.11/re/_parser.py:863: in _parse
p = _parse_sub(source, state, sub_verbose, nested + 1)
/usr/lib/python3.11/re/_parser.py:455: in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
source = <re._parser.Tokenizer object at 0x7fc44e8cd6d0>
state = <re._parser.State object at 0x7fc44e8cda90>, verbose = 0, nested = 3
first = False
def _parse(source, state, verbose, nested, first=False):
# parse a simple pattern
subpattern = SubPattern(state)
# precompute constants into local variables
subpatternappend = subpattern.append
sourceget = source.get
sourcematch = source.match
_len = len
_ord = ord
while True:
this = source.next
if this is None:
break # end of pattern
if this in "|)":
break # end of subpattern
sourceget()
if verbose:
# skip whitespace and comments
if this in WHITESPACE:
continue
if this == "#":
while True:
this = sourceget()
if this is None or this == "\n":
break
continue
if this[0] == "\\":
code = _escape(source, this, state)
subpatternappend(code)
elif this not in SPECIAL_CHARS:
subpatternappend((LITERAL, _ord(this)))
elif this == "[":
here = source.tell() - 1
# character set
set = []
setappend = set.append
## if sourcematch(":"):
## pass # handle character classes
if source.next == '[':
import warnings
warnings.warn(
'Possible nested set at position %d' % source.tell(),
FutureWarning, stacklevel=nested + 6
)
negate = sourcematch("^")
# check remaining characters
while True:
this = sourceget()
if this is None:
raise source.error("unterminated character set",
source.tell() - here)
if this == "]" and set:
break
elif this[0] == "\\":
code1 = _class_escape(source, this)
else:
if set and this in '-&~|' and source.next == this:
import warnings
warnings.warn(
'Possible set %s at position %d' % (
'difference' if this == '-' else
'intersection' if this == '&' else
'symmetric difference' if this == '~' else
'union',
source.tell() - 1),
FutureWarning, stacklevel=nested + 6
)
code1 = LITERAL, _ord(this)
if sourcematch("-"):
# potential range
that = sourceget()
if that is None:
raise source.error("unterminated character set",
source.tell() - here)
if that == "]":
if code1[0] is IN:
code1 = code1[1][0]
setappend(code1)
setappend((LITERAL, _ord("-")))
break
if that[0] == "\\":
code2 = _class_escape(source, that)
else:
if that == '-':
import warnings
warnings.warn(
'Possible set difference at position %d' % (
source.tell() - 2),
FutureWarning, stacklevel=nested + 6
)
code2 = LITERAL, _ord(that)
if code1[0] != LITERAL or code2[0] != LITERAL:
msg = "bad character range %s-%s" % (this, that)
raise source.error(msg, len(this) + 1 + len(that))
lo = code1[1]
hi = code2[1]
if hi < lo:
msg = "bad character range %s-%s" % (this, that)
raise source.error(msg, len(this) + 1 + len(that))
setappend((RANGE, (lo, hi)))
else:
if code1[0] is IN:
code1 = code1[1][0]
setappend(code1)
set = _uniq(set)
# XXX: <fl> should move set optimization to compiler!
if _len(set) == 1 and set[0][0] is LITERAL:
# optimization
if negate:
subpatternappend((NOT_LITERAL, set[0][1]))
else:
subpatternappend(set[0])
else:
if negate:
set.insert(0, (NEGATE, None))
# charmap optimization can't be added here because
# global flags still are not known
subpatternappend((IN, set))
elif this in REPEAT_CHARS:
# repeat previous item
here = source.tell()
if this == "?":
min, max = 0, 1
elif this == "*":
min, max = 0, MAXREPEAT
elif this == "+":
min, max = 1, MAXREPEAT
elif this == "{":
if source.next == "}":
subpatternappend((LITERAL, _ord(this)))
continue
min, max = 0, MAXREPEAT
lo = hi = ""
while source.next in DIGITS:
lo += sourceget()
if sourcematch(","):
while source.next in DIGITS:
hi += sourceget()
else:
hi = lo
if not sourcematch("}"):
subpatternappend((LITERAL, _ord(this)))
source.seek(here)
continue
if lo:
min = int(lo)
if min >= MAXREPEAT:
raise OverflowError("the repetition number is too
large")
if hi:
max = int(hi)
if max >= MAXREPEAT:
raise OverflowError("the repetition number is too
large")
if max < min:
raise source.error("min repeat greater than max
repeat",
source.tell() - here)
else:
raise AssertionError("unsupported quantifier %r" % (char,))
# figure out which item to repeat
if subpattern:
item = subpattern[-1:]
else:
item = None
if not item or item[0][0] is AT:
raise source.error("nothing to repeat",
source.tell() - here + len(this))
if item[0][0] in _REPEATCODES:
raise source.error("multiple repeat",
source.tell() - here + len(this))
if item[0][0] is SUBPATTERN:
group, add_flags, del_flags, p = item[0][1]
if group is None and not add_flags and not del_flags:
item = p
if sourcematch("?"):
# Non-Greedy Match
subpattern[-1] = (MIN_REPEAT, (min, max, item))
elif sourcematch("+"):
# Possessive Match (Always Greedy)
subpattern[-1] = (POSSESSIVE_REPEAT, (min, max, item))
else:
# Greedy Match
subpattern[-1] = (MAX_REPEAT, (min, max, item))
elif this == ".":
subpatternappend((ANY, None))
elif this == "(":
start = source.tell() - 1
capture = True
atomic = False
name = None
add_flags = 0
del_flags = 0
if sourcematch("?"):
# options
char = sourceget()
if char is None:
raise source.error("unexpected end of pattern")
if char == "P":
# python extensions
if sourcematch("<"):
# named group: skip forward to end of name
name = source.getuntil(">", "group name")
source.checkgroupname(name, 1, nested)
elif sourcematch("="):
# named backreference
name = source.getuntil(")", "group name")
source.checkgroupname(name, 1, nested)
gid = state.groupdict.get(name)
if gid is None:
msg = "unknown group name %r" % name
raise source.error(msg, len(name) + 1)
if not state.checkgroup(gid):
raise source.error("cannot refer to an open
group",
len(name) + 1)
state.checklookbehindgroup(gid, source)
subpatternappend((GROUPREF, gid))
continue
else:
char = sourceget()
if char is None:
raise source.error("unexpected end of pattern")
raise source.error("unknown extension ?P" + char,
len(char) + 2)
elif char == ":":
# non-capturing group
capture = False
elif char == "#":
# comment
while True:
if source.next is None:
raise source.error("missing ), unterminated
comment",
source.tell() - start)
if sourceget() == ")":
break
continue
elif char in "=!<":
# lookahead assertions
dir = 1
if char == "<":
char = sourceget()
if char is None:
raise source.error("unexpected end of pattern")
if char not in "=!":
raise source.error("unknown extension ?<" +
char,
len(char) + 2)
dir = -1 # lookbehind
lookbehindgroups = state.lookbehindgroups
if lookbehindgroups is None:
state.lookbehindgroups = state.groups
p = _parse_sub(source, state, verbose, nested + 1)
if dir < 0:
if lookbehindgroups is None:
state.lookbehindgroups = None
if not sourcematch(")"):
raise source.error("missing ), unterminated
subpattern",
source.tell() - start)
if char == "=":
subpatternappend((ASSERT, (dir, p)))
else:
subpatternappend((ASSERT_NOT, (dir, p)))
continue
elif char == "(":
# conditional backreference group
condname = source.getuntil(")", "group name")
if condname.isidentifier():
source.checkgroupname(condname, 1, nested)
condgroup = state.groupdict.get(condname)
if condgroup is None:
msg = "unknown group name %r" % condname
raise source.error(msg, len(condname) + 1)
else:
try:
condgroup = int(condname)
if condgroup < 0:
raise ValueError
except ValueError:
msg = "bad character in group name %r" %
condname
raise source.error(msg, len(condname) + 1) from
None
if not condgroup:
raise source.error("bad group number",
len(condname) + 1)
if condgroup >= MAXGROUPS:
msg = "invalid group reference %d" % condgroup
raise source.error(msg, len(condname) + 1)
if condgroup not in state.grouprefpos:
state.grouprefpos[condgroup] = (
source.tell() - len(condname) - 1
)
if not (condname.isdecimal() and
condname.isascii()):
import warnings
warnings.warn(
"bad character in group name %s at position
%d" %
(repr(condname) if source.istext else
ascii(condname),
source.tell() - len(condname) - 1),
DeprecationWarning, stacklevel=nested + 6
)
state.checklookbehindgroup(condgroup, source)
item_yes = _parse(source, state, verbose, nested + 1)
if source.match("|"):
item_no = _parse(source, state, verbose, nested + 1)
if source.next == "|":
raise source.error("conditional backref with
more than two branches")
else:
item_no = None
if not source.match(")"):
raise source.error("missing ), unterminated
subpattern",
source.tell() - start)
subpatternappend((GROUPREF_EXISTS, (condgroup,
item_yes, item_no)))
continue
elif char == ">":
# non-capturing, atomic group
capture = False
atomic = True
elif char in FLAGS or char == "-":
# flags
flags = _parse_flags(source, state, char)
if flags is None: # global flags
if not first or subpattern:
> raise source.error('global flags not at the
> start '
'of the expression',
source.tell() - start)
E re.error: global flags not at the start of the
expression at position 1
/usr/lib/python3.11/re/_parser.py:841: error
...
===== 200 failed, 48 passed, 1 skipped, 1 xfailed, 217 warnings in 25.94s ======
E: pybuild pybuild:379: test: plugin distutils failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pyscss/build; python3.11 -m pytest
{dir}/scss/tests
...
--- End Message ---