Your message dated Thu, 21 Dec 2023 15:35:35 +0000
with message-id <e1rgl5d-008rhu...@fasolo.debian.org>
and subject line Bug#1058302: fixed in patsy 0.5.4-1
has caused the Debian Bug report #1058302,
regarding patsy: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i 
python{version} -p "3.12 3.11" returned exit code 13
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1058302: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1058302
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Source: patsy
Version: 0.5.3-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20231212 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dpkg-query: no packages found matching ipython
> py3versions: no X-Python3-Version in control file, using supported versions
> py3versions: no X-Python3-Version in control file, using supported versions
> python3.12 setup.py build
> /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: 
> _DeprecatedConfig: Deprecated config in `setup.cfg`
> !!
> 
>         
> ********************************************************************************
>         The license_file parameter is deprecated, use license_files instead.
> 
>         This deprecation is overdue, please update your project and remove 
> deprecated
>         calls to avoid build errors in the future.
> 
>         See 
> https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for 
> details.
>         
> ********************************************************************************
> 
> !!
>   parsed = self.parsers.get(option_name, lambda x: x)(value)
> running build
> running build_py
> creating build
> creating build/lib
> creating build/lib/patsy
> copying patsy/tokens.py -> build/lib/patsy
> copying patsy/compat.py -> build/lib/patsy
> copying patsy/__init__.py -> build/lib/patsy
> copying patsy/test_state.py -> build/lib/patsy
> copying patsy/desc.py -> build/lib/patsy
> copying patsy/test_splines_crs_data.py -> build/lib/patsy
> copying patsy/redundancy.py -> build/lib/patsy
> copying patsy/missing.py -> build/lib/patsy
> copying patsy/parse_formula.py -> build/lib/patsy
> copying patsy/version.py -> build/lib/patsy
> copying patsy/test_splines_bs_data.py -> build/lib/patsy
> copying patsy/builtins.py -> build/lib/patsy
> copying patsy/test_regressions.py -> build/lib/patsy
> copying patsy/origin.py -> build/lib/patsy
> copying patsy/build.py -> build/lib/patsy
> copying patsy/contrasts.py -> build/lib/patsy
> copying patsy/design_info.py -> build/lib/patsy
> copying patsy/state.py -> build/lib/patsy
> copying patsy/mgcv_cubic_splines.py -> build/lib/patsy
> copying patsy/user_util.py -> build/lib/patsy
> copying patsy/constraint.py -> build/lib/patsy
> copying patsy/splines.py -> build/lib/patsy
> copying patsy/infix_parser.py -> build/lib/patsy
> copying patsy/eval.py -> build/lib/patsy
> copying patsy/highlevel.py -> build/lib/patsy
> copying patsy/categorical.py -> build/lib/patsy
> copying patsy/compat_ordereddict.py -> build/lib/patsy
> copying patsy/util.py -> build/lib/patsy
> copying patsy/test_highlevel.py -> build/lib/patsy
> copying patsy/test_build.py -> build/lib/patsy
> python3.11 setup.py build
> /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: 
> _DeprecatedConfig: Deprecated config in `setup.cfg`
> !!
> 
>         
> ********************************************************************************
>         The license_file parameter is deprecated, use license_files instead.
> 
>         This deprecation is overdue, please update your project and remove 
> deprecated
>         calls to avoid build errors in the future.
> 
>         See 
> https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for 
> details.
>         
> ********************************************************************************
> 
> !!
>   parsed = self.parsers.get(option_name, lambda x: x)(value)
> running build
> running build_py
> dh_auto_build
>       pybuild --build -i python{version} -p "3.12 3.11"
> I: pybuild base:310: /usr/bin/python3.12 setup.py build 
> /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: 
> _DeprecatedConfig: Deprecated config in `setup.cfg`
> !!
> 
>         
> ********************************************************************************
>         The license_file parameter is deprecated, use license_files instead.
> 
>         This deprecation is overdue, please update your project and remove 
> deprecated
>         calls to avoid build errors in the future.
> 
>         See 
> https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for 
> details.
>         
> ********************************************************************************
> 
> !!
>   parsed = self.parsers.get(option_name, lambda x: x)(value)
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/tokens.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/compat.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/test_state.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/desc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/test_splines_crs_data.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/redundancy.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/missing.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/parse_formula.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/version.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/test_splines_bs_data.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/builtins.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/test_regressions.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/origin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/build.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/contrasts.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/design_info.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/state.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/mgcv_cubic_splines.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/user_util.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/constraint.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/splines.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/infix_parser.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/eval.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/highlevel.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/categorical.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/compat_ordereddict.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/test_highlevel.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> copying patsy/test_build.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/patsy
> I: pybuild base:310: /usr/bin/python3 setup.py build 
> /usr/lib/python3/dist-packages/setuptools/config/setupcfg.py:293: 
> _DeprecatedConfig: Deprecated config in `setup.cfg`
> !!
> 
>         
> ********************************************************************************
>         The license_file parameter is deprecated, use license_files instead.
> 
>         This deprecation is overdue, please update your project and remove 
> deprecated
>         calls to avoid build errors in the future.
> 
>         See 
> https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for 
> details.
>         
> ********************************************************************************
> 
> !!
>   parsed = self.parsers.get(option_name, lambda x: x)(value)
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/tokens.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/compat.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/test_state.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/desc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/test_splines_crs_data.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/redundancy.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/missing.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/parse_formula.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/version.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/test_splines_bs_data.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/builtins.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/test_regressions.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/origin.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/build.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/contrasts.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/design_info.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/state.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/mgcv_cubic_splines.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/user_util.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/constraint.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/splines.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/infix_parser.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/eval.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/highlevel.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/categorical.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/compat_ordereddict.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/test_highlevel.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> copying patsy/test_build.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build/patsy
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>    dh_auto_test -O--buildsystem=pybuild
>       pybuild --test --test-pytest -i python{version} -p "3.12 3.11"
> I: pybuild base:310: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build; 
> python3.12 -m pytest 
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> collected 148 items
> 
> patsy/build.py .......                                                   [  
> 4%]
> patsy/builtins.py ..                                                     [  
> 6%]
> patsy/categorical.py ....                                                [  
> 8%]
> patsy/constraint.py .....                                                [ 
> 12%]
> patsy/contrasts.py .........                                             [ 
> 18%]
> patsy/desc.py ....F.                                                     [ 
> 22%]
> patsy/design_info.py ........                                            [ 
> 27%]
> patsy/eval.py ...............                                            [ 
> 37%]
> patsy/infix_parser.py .                                                  [ 
> 38%]
> patsy/mgcv_cubic_splines.py ............                                 [ 
> 46%]
> patsy/missing.py .....                                                   [ 
> 50%]
> patsy/origin.py .                                                        [ 
> 50%]
> patsy/parse_formula.py ...FF                                             [ 
> 54%]
> patsy/redundancy.py ....                                                 [ 
> 56%]
> patsy/splines.py ....                                                    [ 
> 59%]
> patsy/test_build.py .................                                    [ 
> 70%]
> patsy/test_highlevel.py ..................                               [ 
> 83%]
> patsy/test_regressions.py .                                              [ 
> 83%]
> patsy/test_state.py ...                                                  [ 
> 85%]
> patsy/tokens.py F.                                                       [ 
> 87%]
> patsy/user_util.py ...                                                   [ 
> 89%]
> patsy/util.py ................                                           
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ______________________ test_eval_formula_error_reporting 
> _______________________
> 
>     def test_eval_formula_error_reporting():
>         from patsy.parse_formula import _parsing_error_test
>         parse_fn = lambda formula: ModelDesc.from_formula(formula)
> >       _parsing_error_test(parse_fn, _eval_error_tests)
> 
> patsy/desc.py:617: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> patsy/parse_formula.py:273: in _parsing_error_test
>     parse_fn(bad_code)
> patsy/desc.py:616: in <lambda>
>     parse_fn = lambda formula: ModelDesc.from_formula(formula)
> patsy/desc.py:164: in from_formula
>     tree = parse_formula(tree_or_string)
> patsy/parse_formula.py:146: in parse_formula
>     tree = infix_parse(_tokenize_formula(code, operator_strings),
> patsy/infix_parser.py:210: in infix_parse
>     for token in token_source:
> patsy/parse_formula.py:89: in _tokenize_formula
>     for pytype, token_string, origin in it:
> patsy/util.py:349: in next
>     return six.advance_iterator(self._it)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> code = 'a + ('
> 
>     def python_tokenize(code):
>         # Since formulas can only contain Python expressions, and Python
>         # expressions cannot meaningfully contain newlines, we'll just remove 
> all
>         # the newlines up front to avoid any complications:
>         code = code.replace("\n", " ").strip()
>         it = tokenize.generate_tokens(StringIO(code).readline)
>         try:
>             for (pytype, string, (_, start), (_, end), code) in it:
>                 if pytype == tokenize.ENDMARKER:
>                     break
>                 origin = Origin(code, start, end)
> >               assert pytype != tokenize.NL
> E               assert 65 != 65
> E                +  where 65 = tokenize.NL
> 
> patsy/tokens.py:35: AssertionError
> ----------------------------- Captured stdout call 
> -----------------------------
> a <+>
> 'a +' 2 3
> expected a noun, but instead the expression ended
>     a +
>       ^
> a + <(>
> 'a + (' 4 5
> ______________________________ test_parse_errors 
> _______________________________
> 
> extra_operators = []
> 
>     def test_parse_errors(extra_operators=[]):
>         def parse_fn(code):
>             return parse_formula(code, extra_operators=extra_operators)
> >       _parsing_error_test(parse_fn, _parser_error_tests)
> 
> patsy/parse_formula.py:285: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> patsy/parse_formula.py:273: in _parsing_error_test
>     parse_fn(bad_code)
> patsy/parse_formula.py:284: in parse_fn
>     return parse_formula(code, extra_operators=extra_operators)
> patsy/parse_formula.py:146: in parse_formula
>     tree = infix_parse(_tokenize_formula(code, operator_strings),
> patsy/infix_parser.py:210: in infix_parse
>     for token in token_source:
> patsy/parse_formula.py:89: in _tokenize_formula
>     for pytype, token_string, origin in it:
> patsy/util.py:349: in next
>     return six.advance_iterator(self._it)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> code = 'a + ('
> 
>     def python_tokenize(code):
>         # Since formulas can only contain Python expressions, and Python
>         # expressions cannot meaningfully contain newlines, we'll just remove 
> all
>         # the newlines up front to avoid any complications:
>         code = code.replace("\n", " ").strip()
>         it = tokenize.generate_tokens(StringIO(code).readline)
>         try:
>             for (pytype, string, (_, start), (_, end), code) in it:
>                 if pytype == tokenize.ENDMARKER:
>                     break
>                 origin = Origin(code, start, end)
> >               assert pytype != tokenize.NL
> E               assert 65 != 65
> E                +  where 65 = tokenize.NL
> 
> patsy/tokens.py:35: AssertionError
> ----------------------------- Captured stdout call 
> -----------------------------
> a <+>
> 'a +' 2 3
> expected a noun, but instead the expression ended
>     a +
>       ^
> a + <(>
> 'a + (' 4 5
> _____________________________ test_parse_extra_op 
> ______________________________
> 
>     def test_parse_extra_op():
>         extra_operators = [Operator("|", 2, 250)]
>         _do_parse_test(_parser_tests,
>                        extra_operators=extra_operators)
>         _do_parse_test(_extra_op_parser_tests,
>                        extra_operators=extra_operators)
> >       test_parse_errors(extra_operators=extra_operators)
> 
> patsy/parse_formula.py:298: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> patsy/parse_formula.py:285: in test_parse_errors
>     _parsing_error_test(parse_fn, _parser_error_tests)
> patsy/parse_formula.py:273: in _parsing_error_test
>     parse_fn(bad_code)
> patsy/parse_formula.py:284: in parse_fn
>     return parse_formula(code, extra_operators=extra_operators)
> patsy/parse_formula.py:146: in parse_formula
>     tree = infix_parse(_tokenize_formula(code, operator_strings),
> patsy/infix_parser.py:210: in infix_parse
>     for token in token_source:
> patsy/parse_formula.py:89: in _tokenize_formula
>     for pytype, token_string, origin in it:
> patsy/util.py:349: in next
>     return six.advance_iterator(self._it)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> code = 'a + ('
> 
>     def python_tokenize(code):
>         # Since formulas can only contain Python expressions, and Python
>         # expressions cannot meaningfully contain newlines, we'll just remove 
> all
>         # the newlines up front to avoid any complications:
>         code = code.replace("\n", " ").strip()
>         it = tokenize.generate_tokens(StringIO(code).readline)
>         try:
>             for (pytype, string, (_, start), (_, end), code) in it:
>                 if pytype == tokenize.ENDMARKER:
>                     break
>                 origin = Origin(code, start, end)
> >               assert pytype != tokenize.NL
> E               assert 65 != 65
> E                +  where 65 = tokenize.NL
> 
> patsy/tokens.py:35: AssertionError
> ----------------------------- Captured stdout call 
> -----------------------------
> '' ['~', '1']
> ParseNode('~', Token('~', <Origin ->~<- 1 (0-1)>), [ParseNode('ONE', 
> Token('ONE', <Origin ~ ->1<- (2-3)>, extra='1'), [])])
> ' ' ['~', '1']
> ParseNode('~', Token('~', <Origin ->~<- 1 (0-1)>), [ParseNode('ONE', 
> Token('ONE', <Origin ~ ->1<- (2-3)>, extra='1'), [])])
> ' \n ' ['~', '1']
> ParseNode('~', Token('~', <Origin ->~<- 1 (0-1)>), [ParseNode('ONE', 
> Token('ONE', <Origin ~ ->1<- (2-3)>, extra='1'), [])])
> '1' ['~', '1']
> ParseNode('~', None, [ParseNode('ONE', Token('ONE', <Origin ->1<- (0-1)>, 
> extra='1'), [])])
> 'a' ['~', 'a']
> ParseNode('~', None, [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin 
> ->a<- (0-1)>, extra='a'), [])])
> 'a ~ b' ['~', 'a', 'b']
> ParseNode('~', Token('~', <Origin a ->~<- b (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- ~ b (0-1)>, 
> extra='a'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a ~ 
> ->b<- (4-5)>, extra='b'), [])])
> '(a ~ b)' ['~', 'a', 'b']
> ParseNode('~', Token('~', <Origin (a ->~<- b) (3-4)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin (->a<- ~ b) (1-2)>, 
> extra='a'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin (a ~ 
> ->b<-) (5-6)>, extra='b'), [])])
> 'a ~ ((((b))))' ['~', 'a', 'b']
> ParseNode('~', Token('~', <Origin a ->~<- ((((b)))) (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- ~ ((((b)))) 
> (0-1)>, extra='a'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', 
> <Origin a ~ ((((->b<-)))) (8-9)>, extra='b'), [])])
> 'a ~ ((((+b))))' ['~', 'a', ['+', 'b']]
> ParseNode('~', Token('~', <Origin a ->~<- ((((+b)))) (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- ~ ((((+b)))) 
> (0-1)>, extra='a'), []), ParseNode('+', Token('+', <Origin a ~ ((((->+<-b)))) 
> (8-9)>), [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a ~ 
> ((((+->b<-)))) (9-10)>, extra='b'), [])])])
> 'a + b + c' ['~', ['+', ['+', 'a', 'b'], 'c']]
> ParseNode('~', None, [ParseNode('+', Token('+', <Origin a + b ->+<- c 
> (6-7)>), [ParseNode('+', Token('+', <Origin a ->+<- b + c (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- + b + c (0-1)>, 
> extra='a'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + 
> ->b<- + c (4-5)>, extra='b'), [])]), ParseNode('PYTHON_EXPR', 
> Token('PYTHON_EXPR', <Origin a + b + ->c<- (8-9)>, extra='c'), [])])])
> 'a + (b ~ c) + d' ['~', ['+', ['+', 'a', ['~', 'b', 'c']], 'd']]
> ParseNode('~', None, [ParseNode('+', Token('+', <Origin a + (b ~ c) ->+<- d 
> (12-13)>), [ParseNode('+', Token('+', <Origin a ->+<- (b ~ c) + d (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- + (b ~ c) + d 
> (0-1)>, extra='a'), []), ParseNode('~', Token('~', <Origin a + (b ->~<- c) + 
> d (7-8)>), [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + (->b<- 
> ~ c) + d (5-6)>, extra='b'), []), ParseNode('PYTHON_EXPR', 
> Token('PYTHON_EXPR', <Origin a + (b ~ ->c<-) + d (9-10)>, extra='c'), 
> [])])]), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + (b ~ c) + 
> ->d<- (14-15)>, extra='d'), [])])])
> 'a + np.log(a, base=10)' ['~', ['+', 'a', 'np.log(a, base=10)']]
> ParseNode('~', None, [ParseNode('+', Token('+', <Origin a ->+<- np.log(a, 
> base=10) (2-3)>), [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin 
> ->a<- + np.log(a, base=10) (0-1)>, extra='a'), []), ParseNode('PYTHON_EXPR', 
> Token('PYTHON_EXPR', <Origin a + ->np.log(a, base=10)<- (4-22)>, 
> extra='np.log(a, base=10)'), [])])])
> 'a + np . log(a , base = 10)' ['~', ['+', 'a', 'np.log(a, base=10)']]
> ParseNode('~', None, [ParseNode('+', Token('+', <Origin a ->+<- np . log(a , 
> base = 10) (2-3)>), [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin 
> ->a<- + np . log(a , base = 10) (0-1)>, extra='a'), []), 
> ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + ->np . log(a , base 
> = 10)<- (4-27)>, extra='np.log(a, base=10)'), [])])])
> 'a + b ~ c * d' ['~', ['+', 'a', 'b'], ['*', 'c', 'd']]
> ParseNode('~', Token('~', <Origin a + b ->~<- c * d (6-7)>), [ParseNode('+', 
> Token('+', <Origin a ->+<- b ~ c * d (2-3)>), [ParseNode('PYTHON_EXPR', 
> Token('PYTHON_EXPR', <Origin ->a<- + b ~ c * d (0-1)>, extra='a'), []), 
> ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + ->b<- ~ c * d 
> (4-5)>, extra='b'), [])]), ParseNode('*', Token('*', <Origin a + b ~ c ->*<- 
> d (10-11)>), [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + b ~ 
> ->c<- * d (8-9)>, extra='c'), []), ParseNode('PYTHON_EXPR', 
> Token('PYTHON_EXPR', <Origin a + b ~ c * ->d<- (12-13)>, extra='d'), [])])])
> 'a + b * c' ['~', ['+', 'a', ['*', 'b', 'c']]]
> ParseNode('~', None, [ParseNode('+', Token('+', <Origin a ->+<- b * c 
> (2-3)>), [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- + b * c 
> (0-1)>, extra='a'), []), ParseNode('*', Token('*', <Origin a + b ->*<- c 
> (6-7)>), [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + ->b<- * c 
> (4-5)>, extra='b'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', 
> <Origin a + b * ->c<- (8-9)>, extra='c'), [])])])])
> '-a**2' ['~', ['-', ['**', 'a', '2']]]
> ParseNode('~', None, [ParseNode('-', Token('-', <Origin ->-<-a**2 (0-1)>), 
> [ParseNode('**', Token('**', <Origin -a->**<-2 (2-4)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin -->a<-**2 (1-2)>, 
> extra='a'), []), ParseNode('NUMBER', Token('NUMBER', <Origin -a**->2<- 
> (4-5)>, extra='2'), [])])])])
> '-a:b' ['~', ['-', [':', 'a', 'b']]]
> ParseNode('~', None, [ParseNode('-', Token('-', <Origin ->-<-a:b (0-1)>), 
> [ParseNode(':', Token(':', <Origin -a->:<-b (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin -->a<-:b (1-2)>, 
> extra='a'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin 
> -a:->b<- (3-4)>, extra='b'), [])])])])
> 'a + b:c' ['~', ['+', 'a', [':', 'b', 'c']]]
> ParseNode('~', None, [ParseNode('+', Token('+', <Origin a ->+<- b:c (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- + b:c (0-1)>, 
> extra='a'), []), ParseNode(':', Token(':', <Origin a + b->:<-c (5-6)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + ->b<-:c (4-5)>, 
> extra='b'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a + 
> b:->c<- (6-7)>, extra='c'), [])])])])
> '(a + b):c' ['~', [':', ['+', 'a', 'b'], 'c']]
> ParseNode('~', None, [ParseNode(':', Token(':', <Origin (a + b)->:<-c 
> (7-8)>), [ParseNode('+', Token('+', <Origin (a ->+<- b):c (3-4)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin (->a<- + b):c (1-2)>, 
> extra='a'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin (a + 
> ->b<-):c (5-6)>, extra='b'), [])]), ParseNode('PYTHON_EXPR', 
> Token('PYTHON_EXPR', <Origin (a + b):->c<- (8-9)>, extra='c'), [])])])
> 'a*b:c' ['~', ['*', 'a', [':', 'b', 'c']]]
> ParseNode('~', None, [ParseNode('*', Token('*', <Origin a->*<-b:c (1-2)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<-*b:c (0-1)>, 
> extra='a'), []), ParseNode(':', Token(':', <Origin a*b->:<-c (3-4)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a*->b<-:c (2-3)>, 
> extra='b'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin 
> a*b:->c<- (4-5)>, extra='c'), [])])])])
> 'a+b / c' ['~', ['+', 'a', ['/', 'b', 'c']]]
> ParseNode('~', None, [ParseNode('+', Token('+', <Origin a->+<-b / c (1-2)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<-+b / c (0-1)>, 
> extra='a'), []), ParseNode('/', Token('/', <Origin a+b ->/<- c (4-5)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a+->b<- / c (2-3)>, 
> extra='b'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a+b / 
> ->c<- (6-7)>, extra='c'), [])])])])
> '~ a' ['~', 'a']
> ParseNode('~', Token('~', <Origin ->~<- a (0-1)>), [ParseNode('PYTHON_EXPR', 
> Token('PYTHON_EXPR', <Origin ~ ->a<- (2-3)>, extra='a'), [])])
> '-1' ['~', ['-', '1']]
> ParseNode('~', None, [ParseNode('-', Token('-', <Origin ->-<-1 (0-1)>), 
> [ParseNode('ONE', Token('ONE', <Origin -->1<- (1-2)>, extra='1'), [])])])
> 'a | b' ['~', ['|', 'a', 'b']]
> ParseNode('~', None, [ParseNode('|', Token('|', <Origin a ->|<- b (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- | b (0-1)>, 
> extra='a'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a | 
> ->b<- (4-5)>, extra='b'), [])])])
> 'a * b|c' ['~', ['*', 'a', ['|', 'b', 'c']]]
> ParseNode('~', None, [ParseNode('*', Token('*', <Origin a ->*<- b|c (2-3)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin ->a<- * b|c (0-1)>, 
> extra='a'), []), ParseNode('|', Token('|', <Origin a * b->|<-c (5-6)>), 
> [ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a * ->b<-|c (4-5)>, 
> extra='b'), []), ParseNode('PYTHON_EXPR', Token('PYTHON_EXPR', <Origin a * 
> b|->c<- (6-7)>, extra='c'), [])])])])
> a <+>
> 'a +' 2 3
> expected a noun, but instead the expression ended
>     a +
>       ^
> a + <(>
> 'a + (' 4 5
> _____________________________ test_python_tokenize 
> _____________________________
> 
>     def test_python_tokenize():
>         code = "a + (foo * -1)"
>         tokens = list(python_tokenize(code))
>         expected = [(tokenize.NAME, "a", Origin(code, 0, 1)),
>                     (tokenize.OP, "+", Origin(code, 2, 3)),
>                     (tokenize.OP, "(", Origin(code, 4, 5)),
>                     (tokenize.NAME, "foo", Origin(code, 5, 8)),
>                     (tokenize.OP, "*", Origin(code, 9, 10)),
>                     (tokenize.OP, "-", Origin(code, 11, 12)),
>                     (tokenize.NUMBER, "1", Origin(code, 12, 13)),
>                     (tokenize.OP, ")", Origin(code, 13, 14))]
>         assert tokens == expected
>     
>         code2 = "a + (b"
> >       tokens2 = list(python_tokenize(code2))
> 
> patsy/tokens.py:74: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> code = 'a + (b'
> 
>     def python_tokenize(code):
>         # Since formulas can only contain Python expressions, and Python
>         # expressions cannot meaningfully contain newlines, we'll just remove 
> all
>         # the newlines up front to avoid any complications:
>         code = code.replace("\n", " ").strip()
>         it = tokenize.generate_tokens(StringIO(code).readline)
>         try:
>             for (pytype, string, (_, start), (_, end), code) in it:
>                 if pytype == tokenize.ENDMARKER:
>                     break
>                 origin = Origin(code, start, end)
> >               assert pytype != tokenize.NL
> E               assert 65 != 65
> E                +  where 65 = tokenize.NL
> 
> patsy/tokens.py:35: AssertionError
> =============================== warnings summary 
> ===============================
> ../../../../../../usr/lib/python3/dist-packages/dateutil/tz/tz.py:37
>   /usr/lib/python3/dist-packages/dateutil/tz/tz.py:37: DeprecationWarning: 
> datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal 
> in a future version. Use timezone-aware objects to represent datetimes in 
> UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
>     EPOCH = datetime.datetime.utcfromtimestamp(0)
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info 
> ============================
> FAILED patsy/desc.py::test_eval_formula_error_reporting - assert 65 != 65
> FAILED patsy/parse_formula.py::test_parse_errors - assert 65 != 65
> FAILED patsy/parse_formula.py::test_parse_extra_op - assert 65 != 65
> FAILED patsy/tokens.py::test_python_tokenize - assert 65 != 65
> ================== 4 failed, 144 passed, 1 warning in 36.75s 
> ===================
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build; python3.12 -m pytest 
> I: pybuild base:310: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11/build; 
> python3.11 -m pytest 
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> collected 148 items
> 
> patsy/build.py .......                                                   [  
> 4%]
> patsy/builtins.py ..                                                     [  
> 6%]
> patsy/categorical.py ....                                                [  
> 8%]
> patsy/constraint.py .....                                                [ 
> 12%]
> patsy/contrasts.py .........                                             [ 
> 18%]
> patsy/desc.py ......                                                     [ 
> 22%]
> patsy/design_info.py ........                                            [ 
> 27%]
> patsy/eval.py ...............                                            [ 
> 37%]
> patsy/infix_parser.py .                                                  [ 
> 38%]
> patsy/mgcv_cubic_splines.py ............                                 [ 
> 46%]
> patsy/missing.py .....                                                   [ 
> 50%]
> patsy/origin.py .                                                        [ 
> 50%]
> patsy/parse_formula.py .....                                             [ 
> 54%]
> patsy/redundancy.py ....                                                 [ 
> 56%]
> patsy/splines.py ....                                                    [ 
> 59%]
> patsy/test_build.py .................                                    [ 
> 70%]
> patsy/test_highlevel.py ..................                               [ 
> 83%]
> patsy/test_regressions.py .                                              [ 
> 83%]
> patsy/test_state.py ...                                                  [ 
> 85%]
> patsy/tokens.py ..                                                       [ 
> 87%]
> patsy/user_util.py ...                                                   [ 
> 89%]
> patsy/util.py ................                                           
> [100%]
> 
> ============================= 148 passed in 35.93s 
> =============================
>       rm -fr -- /tmp/dh-xdg-rundir-1FwRDwYw
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 
> 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2023/12/12/patsy_0.5.3-1_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

--- End Message ---
--- Begin Message ---
Source: patsy
Source-Version: 0.5.4-1
Done: Lance Lin <lq27...@gmail.com>

We believe that the bug you reported is fixed in the latest version of
patsy, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1058...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Lance Lin <lq27...@gmail.com> (supplier of updated patsy package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Wed, 20 Dec 2023 20:32:17 +0700
Source: patsy
Architecture: source
Version: 0.5.4-1
Distribution: unstable
Urgency: medium
Maintainer: Debian Med Packaging Team 
<debian-med-packag...@lists.alioth.debian.org>
Changed-By: Lance Lin <lq27...@gmail.com>
Closes: 1047040 1058302
Changes:
 patsy (0.5.4-1) unstable; urgency=medium
 .
   * Team upload.
   * New upstream version (Closes: #1058302)
   * Standards-Version: 4.6.2 (routine-update)
   * d/source/lintian-overrides: Remove, not needed
   * Refresh patches and update descriptions
   * d/rules: Clean png files in doc/savefig (Closes: #1047040)
   * d/control: Add Testsuite autopkgtest-pkg-pybuild
   * d/tests: Remove, upstream tests run by autopkgtest-pkg-pybuild
   * d/rules: Copy upstream tests to build directory for autopkgtest
Checksums-Sha1:
 820314d92634b1e0afd9d465de895b96a4222747 2262 patsy_0.5.4-1.dsc
 9c2b08ac5a9760e88cde0cb68d43c62e4489ecbd 411193 patsy_0.5.4.orig.tar.gz
 24cc619c8c1faaa9ca80a6ccbfbb5d0a2fc463f0 9552 patsy_0.5.4-1.debian.tar.xz
 3e3344a9384476f418506b70521673043ca26d35 11415 patsy_0.5.4-1_amd64.buildinfo
Checksums-Sha256:
 4bbf360215777e9e53e7e9d267d78855f7324f8544662b7c8284c834b4880374 2262 
patsy_0.5.4-1.dsc
 bd0753ba3c8ffb544b45bc7876f847dc69545586433d977fc0050e8702a043a2 411193 
patsy_0.5.4.orig.tar.gz
 58d0e49fbddeb641d5e6476658578d697d2030a72b0089740e4382d425804caf 9552 
patsy_0.5.4-1.debian.tar.xz
 81bd9fc5b0e69bc00cdac2976a78dc79a390474f703d711acac44c4fb7f9b81c 11415 
patsy_0.5.4-1_amd64.buildinfo
Files:
 a8c2f7445b18aeab9c17eaed5605fb6e 2262 python optional patsy_0.5.4-1.dsc
 135b5a910767e0d38839279c09a828ed 411193 python optional patsy_0.5.4.orig.tar.gz
 c186d0a3aff0ce87ea363021da0a3391 9552 python optional 
patsy_0.5.4-1.debian.tar.xz
 32abb0df8e2bbb815bc0e6ba60815347 11415 python optional 
patsy_0.5.4-1_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJFBAEBCAAvFiEE8fAHMgoDVUHwpmPKV4oElNHGRtEFAmWEVQ8RHHRpbGxlQGRl
Ymlhbi5vcmcACgkQV4oElNHGRtF85hAAlNiY7l8JxHbAkrO8J15SM32RzrjI63KE
hHB7LJeHcWlS8mmOnd/LYOpVpE111CRW2k4oQcBZ0JnQ9ZDHoBWnfSKaA/KozQO9
fzq0DBJuhcz9gu+opHov37Y0K5cBsaquzOZUyplc0wY0ktysQJCCyWRh62JTHkYc
M6x0elilN/MxtMN0Nz5o6IsnfHXWfRJsFVQrjXUON4IlM2W4foO9tuF4roF4lsG1
5L3DQPxkwGknRhp1UQ69JGapdyKC5AmI4EvZ/8loIVotAA/3s8MfSgc+EBoZOSbb
pu5WDjvKXDIksiykYv7qIQkYt2Dv+dyBIagRhLPIaA4uuCbEgxv4VpL1DHkZKtGj
yEN0+YGnXufOYemDA8cLPtjvdmekNUfk+akddGM52dcHlhX2fop1Kga5dO2S8RSx
XuB/kLl+e/qcp0HOHpU98n/M5xqL6OX/OD5k+Vau6LGw4ow9h4B6Mty/TLLiqRvs
CsLnuvWX3S1Zk9p5KgIExAQhCeV7ZMwcqJA50X/7ahZVa6EA+pLyyyCjcRGnZNKm
PAgSpYnEmg7O1zqC7q/pB1ThJcacIQ8mX2H30O4C/juXkHqt/QCeoNuOLZ8+AJbi
aYG8A4vGhndR97cSYp2i2kaVobKejcVmgxCOnH6m+JFF+/u8mXmU6DecLWxLJU4/
/XJE9q6INhw=
=wING
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to