flatsurf / surface-dynamics

Teichmüller dynamics in SageMath
https://flatsurf.github.io/surface-dynamics/
GNU General Public License v2.0
12 stars 14 forks source link

friendlier flip sequences #43

Closed videlec closed 2 years ago

videlec commented 2 years ago

Checklist

videlec commented 2 years ago

@saraedum There is something fishy happening in the CI https://github.com/flatsurf/surface-dynamics/runs/4742660015?check_suite_focus=true : the setup.py creates a segfault.

saraedum commented 2 years ago

I'll try to reproduce this locally. Not that much has changed from the working setup to the broken one:

broken working

argon2-cffi               21.3.0             pyhd8ed1ab_0     | argon2-cffi               21.1.0           py39h3811e60_2
argon2-cffi-bindings      21.2.0           py39h3811e60_1     <
attrs                     21.4.0             pyhd8ed1ab_0     | async_generator           1.10                       py_0
                                  > attrs                     21.2.0             pyhd8ed1ab_0
binutils_linux-64         2.36                 hf3e587d_4     | binutils_linux-64         2.36                 hf3e587d_1
bzip2                     1.0.8                h7f98852_4     <
cypari2                   2.1.2            py39h2d52071_3     | cypari2                   2.1.2            py39h2d52071_2
cysignals                 1.11.2           py39hadcdca9_0     | cysignals                 1.10.3           py39hadcdca9_2
cython                    0.29.26          py39he80948d_0     | cython                    0.29.24          py39he80948d_1
decorator                 5.1.1              pyhd8ed1ab_0     | decorator                 5.1.0              pyhd8ed1ab_0
entrypoints               0.3             pyhd8ed1ab_1003     | entrypoints               0.3             py39hde42818_1002
expat                     2.4.2                h9c3ff4c_0     | expat                     2.4.1                h9c3ff4c_0
flit-core                 3.6.0              pyhd8ed1ab_0     <
fonttools                 4.28.5           py39h3811e60_0     | fonttools                 4.28.2           py39h3811e60_0
gcc                       9.4.0                h192d537_4     | gcc                       9.4.0                h192d537_1
gcc_linux-64              9.4.0                h391b98a_4     | gcc_linux-64              9.4.0                h391b98a_1
gmpy2                     2.1.2            py39h78fa15d_0     | gmpy2                     2.1.0rc1         py39h78fa15d_0
gxx                       9.4.0                h192d537_4     | gxx                       9.4.0                h192d537_1
gxx_linux-64              9.4.0                h0316aca_4     | gxx_linux-64              9.4.0                h0316aca_1
igraph                    0.9.6                ha184e22_0     | igraph                    0.9.5                ha184e22_0
importlib-metadata        4.10.0           py39hf3d152e_0     | importlib-metadata        4.8.2            py39hf3d152e_0
ipykernel                 6.7.0            py39hef51801_0     | ipykernel                 6.5.1            py39hef51801_0
ipython                   7.31.0           py39hf3d152e_0     | ipython                   7.30.0           py39hf3d152e_0
jsonschema                4.4.0              pyhd8ed1ab_0     | jsonschema                4.2.1              pyhd8ed1ab_0
libcurl                   7.81.0               h494985f_0     | libcurl                   7.80.0               h494985f_0
libnsl                    2.0.0                h7f98852_0     <
matplotlib-base           3.5.1            py39h2fa2bec_0     | matplotlib-base           3.5.0            py39h2fa2bec_0
                                  > more-itertools            8.12.0             pyhd8ed1ab_0
nbclient                  0.5.10             pyhd8ed1ab_1     | nbclient                  0.5.9              pyhd8ed1ab_0
nbconvert                 6.4.0            py39hf3d152e_0     | nbconvert                 6.3.0            py39hf3d152e_1
nest-asyncio              1.5.4              pyhd8ed1ab_0     | nest-asyncio              1.5.1              pyhd8ed1ab_0
notebook                  6.4.7              pyha770c72_0     | notebook                  6.4.6              pyha770c72_0
numpy                     1.22.0           py39h91f2184_0     | numpy                     1.21.4           py39hdbf815f_0
pandoc                    2.17                 h7f98852_0     | pandoc                    2.16.2               h7f98852_0
pickleshare               0.7.5                   py_1003     | pickleshare               0.7.5           py39hde42818_1002
pplpy                     0.8.6            py39h68068d8_1     | pplpy                     0.8.6            py39h68068d8_0
prompt-toolkit            3.0.24             pyha770c72_0     | prompt-toolkit            3.0.22             pyha770c72_0
psutil                    5.9.0            py39h3811e60_0     | psutil                    5.8.0            py39h3811e60_2
pygments                  2.11.2             pyhd8ed1ab_0     | pygments                  2.10.0             pyhd8ed1ab_0
pytest                    6.2.5            py39hf3d152e_2     | pytest                    6.2.5            py39hf3d152e_1
pytest-forked             1.4.0              pyhd8ed1ab_0     | pytest-forked             1.3.0              pyhd3deb0d_0
pytest-xdist              2.5.0              pyhd8ed1ab_0     | pytest-xdist              2.4.0              pyhd8ed1ab_0
python                    3.9.9           h543edf9_0_cpython  | python                    3.9.7           hf930737_3_cpython
setuptools                60.5.0           py39hf3d152e_0     | setuptools                59.4.0           py39hf3d152e_0
tbb                       2021.5.0             h4bd325d_0     | tbb                       2021.4.0             h4bd325d_1
wheel                     0.37.1             pyhd8ed1ab_0     | wheel                     0.37.0             pyhd8ed1ab_1
zipp                      3.7.0              pyhd8ed1ab_0     | zipp                      3.6.0              pyhd8ed1ab_0
zstd                      1.5.1                ha95c52a_0     | zstd                      1.5.0                ha95c52a_0

This is maybe what was behind https://github.com/conda-forge/sagelib-feedstock/issues/115

saraedum commented 2 years ago

With the exactly these packages, pip install just hangs for me.

saraedum commented 2 years ago

@isuruf when I try to pip install this package into the following environment, pip just hangs:

_libgcc_mutex=0.1=conda_forge _openmp_mutex=4.5=1_gnu arb=2.19.0=h7e34412_1 argon2-cffi=21.3.0=pyhd8ed1ab_0 argon2-cffi-bindings=21.2.0=py39h3811e60_1 arpack=3.7.0=hdefa2d7_2 attrs=21.4.0=pyhd8ed1ab_0 backcall=0.2.0=pyh9f0ad1d_0 backports=1.0=py_2 backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0 bdw-gc=8.0.4=h0efe328_0 binutils=2.36.1=hdd6e379_2 binutils_impl_linux-64=2.36.1=h193b22a_2 binutils_linux-64=2.36=hf3e587d_4 bleach=4.1.0=pyhd8ed1ab_0 brotli=1.0.9=h7f98852_6 brotli-bin=1.0.9=h7f98852_6 bzip2=1.0.8=h7f98852_4 c-ares=1.18.1=h7f98852_0 c-compiler=1.3.0=h7f98852_0 ca-certificates=2021.10.8=ha878542_0 cddlib=1!0.94m=h9202a9a_0 certifi=2021.10.8=py39hf3d152e_1 cffi=1.15.0=py39h4bc2ebd_0 cliquer=1.22=h36c2ea0_0 cxx-compiler=1.3.0=h4bd325d_0 cycler=0.11.0=pyhd8ed1ab_0 cypari2=2.1.2=py39h2d52071_3 cysignals=1.11.2=py39hadcdca9_0 cython=0.29.26=py39he80948d_0 debugpy=1.5.1=py39he80948d_0 decorator=5.1.1=pyhd8ed1ab_0 defusedxml=0.7.1=pyhd8ed1ab_0 ecl=21.2.1=h368658b_1 eclib=20210503=h717840f_2 ecm=7.0.4=h9202a9a_1002 entrypoints=0.3=pyhd8ed1ab_1003 execnet=1.9.0=pyhd8ed1ab_0 expat=2.4.2=h9c3ff4c_0 fflas-ffpack=2.4.3=h912ac81_2 flit-core=3.6.0=pyhd8ed1ab_0 font-ttf-dejavu-sans-mono=2.37=hab24e00_0 font-ttf-inconsolata=3.000=h77eed37_0 font-ttf-source-code-pro=2.038=h77eed37_0 font-ttf-ubuntu=0.83=hab24e00_0 fontconfig=2.13.1=hba837de_1005 fonts-conda-ecosystem=1=0 fonts-conda-forge=1=0 fonttools=4.28.5=py39h3811e60_0 freetype=2.10.4=h0708190_1 future=0.18.2=py39hf3d152e_4 gap-core=4.11.1=h1725ef4_2 gap-defaults=4.11.1=ha770c72_2 gcc=9.4.0=h192d537_4 gcc_impl_linux-64=9.4.0=h03d3576_11 gcc_linux-64=9.4.0=h391b98a_4 gf2x=1.3.0=h75e9656_1 giac=1.6.0.47=h7829e96_3 giflib=5.2.1=h36c2ea0_2 givaro=4.1.1=h192cbe9_1 glpk=4.65=h9202a9a_1004 gmp=6.2.1=h58526e2_0 gmpy2=2.1.2=py39h78fa15d_0 gsl=2.7=he838d99_0 gxx=9.4.0=h192d537_4 gxx_impl_linux-64=9.4.0=h03d3576_11 gxx_linux-64=9.4.0=h0316aca_4 icu=69.1=h9c3ff4c_0 igraph=0.9.6=ha184e22_0 iml=1.0.5=hd75c201_1003 importlib-metadata=4.10.0=py39hf3d152e_0 importlib_resources=5.4.0=pyhd8ed1ab_0 iniconfig=1.1.1=pyh9f0ad1d_0 ipykernel=6.7.0=py39hef51801_0 ipython=7.31.0=py39hf3d152e_0 ipython_genutils=0.2.0=py_1 ipywidgets=7.6.5=pyhd8ed1ab_0 jbig=2.1=h7f98852_2003 jedi=0.18.1=py39hf3d152e_0 jinja2=3.0.3=pyhd8ed1ab_0 jpeg=9d=h36c2ea0_0 jsonschema=4.4.0=pyhd8ed1ab_0 jupyter_client=7.1.0=pyhd8ed1ab_0 jupyter_core=4.9.1=py39hf3d152e_1 jupyterlab_pygments=0.1.2=pyh9f0ad1d_0 jupyterlab_widgets=1.0.2=pyhd8ed1ab_0 kernel-headers_linux-64=2.6.32=he073ed8_15 kiwisolver=1.3.2=py39h1a9c180_1 krb5=1.19.2=h48eae69_3 lcalc=1.23=h8cd7e2e_1006 lcms2=2.12=hddcbb42_0 ld_impl_linux-64=2.36.1=hea4e1c9_2 lerc=3.0=h9c3ff4c_0 libblas=3.9.0=12_linux64_openblas libbraiding=1.1=h58526e2_0 libbrial=1.2.10=hb0536f6_0 libbrotlicommon=1.0.9=h7f98852_6 libbrotlidec=1.0.9=h7f98852_6 libbrotlienc=1.0.9=h7f98852_6 libcblas=3.9.0=12_linux64_openblas libcurl=7.81.0=h494985f_0 libdeflate=1.8=h7f98852_0 libedit=3.1.20191231=he28a2e2_2 libev=4.33=h516909a_1 libffi=3.4.2=h7f98852_5 libflint=2.7.1=hd3cd37b_ntl_102 libgcc-devel_linux-64=9.4.0=hd854feb_11 libgcc-ng=11.2.0=h1d223b6_11 libgd=2.3.3=h3cfcdeb_1 libgfortran-ng=11.2.0=h69a702a_11 libgfortran5=11.2.0=h5c6108e_11 libgomp=11.2.0=h1d223b6_11 libhomfly=1.02r6=h36c2ea0_0 libiconv=1.16=h516909a_0 liblapack=3.9.0=12_linux64_openblas liblapacke=3.9.0=12_linux64_openblas libnghttp2=1.43.0=ha19adfc_1 libnsl=2.0.0=h7f98852_0 libopenblas=0.3.18=pthreads_h8fe5266_0 libpng=1.6.37=h21135ba_2 libsanitizer=9.4.0=h79bfe98_11 libsodium=1.0.18=h36c2ea0_1 libssh2=1.10.0=ha35d2d1_2 libstdcxx-devel_linux-64=9.4.0=hd854feb_11 libstdcxx-ng=11.2.0=he4da1e4_11 libtiff=4.3.0=h6f004c6_2 libuuid=2.32.1=h7f98852_1000 libwebp=1.2.1=h3452ae3_0 libwebp-base=1.2.1=h7f98852_0 libxml2=2.9.12=h885dcf4_1 libzlib=1.2.11=h36c2ea0_1013 linbox=1.6.3=h120243f_5 lrcalc=1.2=h58526e2_1000 lz4-c=1.9.3=h9c3ff4c_1 m4ri=20140914=h7ca028e_1005 m4rie=20150908=h7ca028e_1001 markupsafe=2.0.1=py39h3811e60_1 matplotlib-base=3.5.1=py39h2fa2bec_0 matplotlib-inline=0.1.3=pyhd8ed1ab_0 metis=5.1.0=h58526e2_1006 mistune=0.8.4=py39h3811e60_1005 mpc=1.2.1=h9f54685_0 mpfi=1.5.4=h9f54685_1001 mpfr=4.1.0=h9202a9a_1 mpmath=1.2.1=pyhd8ed1ab_0 munkres=1.1.4=pyh9f0ad1d_0 nauty=2.7.2=h7f98852_0 nbclient=0.5.10=pyhd8ed1ab_1 nbconvert=6.4.0=py39hf3d152e_0 nbformat=5.1.3=pyhd8ed1ab_0 ncurses=6.2=h58526e2_4 nest-asyncio=1.5.4=pyhd8ed1ab_0 notebook=6.4.7=pyha770c72_0 ntl=11.4.3=hef3c4d3_1 numpy=1.22.0=py39h91f2184_0 olefile=0.46=pyh9f0ad1d_1 openjpeg=2.4.0=hb52868f_1 openssl=3.0.0=h7f98852_2 packaging=21.3=pyhd8ed1ab_0 pandoc=2.17=h7f98852_0 pandocfilters=1.5.0=pyhd8ed1ab_0 pari=2.13.2=he2feae2_1_pthread pari-galdata=0.0.20180411=0 pari-seadata-small=0.0.20090618=0 parso=0.8.3=pyhd8ed1ab_0 perl=5.32.1=1_h7f98852_perl5 pexpect=4.8.0=pyh9f0ad1d_2 pickleshare=0.7.5=py_1003 pillow=8.4.0=py39ha612740_0 pip=21.3.1=pyhd8ed1ab_0 planarity=3.0.0.5=h36c2ea0_1002 pluggy=1.0.0=py39hf3d152e_2 ppl=1.2=h8c76519_1004 pplpy=0.8.6=py39h68068d8_1 prometheus_client=0.12.0=pyhd8ed1ab_0 prompt-toolkit=3.0.24=pyha770c72_0 psutil=5.9.0=py39h3811e60_0 ptyprocess=0.7.0=pyhd3deb0d_0 py=1.11.0=pyh6c4a22f_0 pycparser=2.21=pyhd8ed1ab_0 pygments=2.11.2=pyhd8ed1ab_0 pynac=0.7.27=py39hdf45853_3 pyparsing=3.0.6=pyhd8ed1ab_0 pyrsistent=0.18.0=py39h3811e60_0 pytest=6.2.5=py39hf3d152e_2 pytest-forked=1.4.0=pyhd8ed1ab_0 pytest-xdist=2.5.0=pyhd8ed1ab_0 python=3.9.9=h543edf9_0_cpython python-dateutil=2.8.2=pyhd8ed1ab_0 python_abi=3.9=2_cp39 pyzmq=22.3.0=py39h37b5a0c_1 ratpoints=2.1.3=h445213a_1002 readline=8.1=h46c0cb4_0 rw=0.9=h7f98852_0 sagelib=9.3=py39hc901c0d_6 sagemath-db-conway-polynomials=0.5.0=ha878542_1 scipy=1.7.3=py39hee8e79c_0 send2trash=1.8.0=pyhd8ed1ab_0 setuptools=60.5.0=py39hf3d152e_0 singular=4.2.0.p3=h8b94468_1 six=1.16.0=pyh6c4a22f_0 sqlite=3.37.0=h9cd32fc_0 suitesparse=5.10.1=h9e50725_1 symmetrica=2.0=h58526e2_1007 sympy=1.9=py39hf3d152e_1 sysroot_linux-64=2.12=he073ed8_15 tbb=2021.5.0=h4bd325d_0 terminado=0.12.1=py39hf3d152e_1 testpath=0.5.0=pyhd8ed1ab_0 tk=8.6.11=h27826a3_1 toml=0.10.2=pyhd8ed1ab_0 tornado=6.1=py39h3811e60_2 traitlets=5.1.1=pyhd8ed1ab_0 tzdata=2021e=he74cb21_0 wcwidth=0.2.5=pyh9f0ad1d_2 webencodings=0.5.1=py_1 wheel=0.37.1=pyhd8ed1ab_0 widgetsnbextension=3.5.2=py39hf3d152e_1 xz=5.2.5=h516909a_1 zeromq=4.3.4=h9c3ff4c_1 zipp=3.7.0=pyhd8ed1ab_0 zlib=1.2.11=h36c2ea0_1013 zn_poly=0.9.2=h9202a9a_0 zstd=1.5.1=ha95c52a_0

However, when I downgrade cypari2 from 2.1.2=py39h2d52071_3 to 2.1.2=py39h2d52071_2 everything seems to work.

What has changed in that build of cypari2?

saraedum commented 2 years ago

@videlec locally it does not hang anymore if I remove the import of sage.all from setup.py. I can import sage.all without problem in a normal Python session in this environment but inside pip there seems to be a problem.

saraedum commented 2 years ago

Now there is a doctest failing at least:

File "surface_dynamics/flat_surfaces/quadratic_strata.py", line 109, in surface_dynamics.flat_surfaces.quadratic_strata
Failed example:
    for c in cc:
        print(c)
        print(c.permutation_representative())
Exception raised:
    Traceback (most recent call last):
      File "/usr/share/miniconda/envs/test/lib/python3.9/site-packages/sage/doctest/forker.py", line 714, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/usr/share/miniconda/envs/test/lib/python3.9/site-packages/sage/doctest/forker.py", line 1133, in compile_and_execute
        exec(compiled, globs)
      File "<doctest surface_dynamics.flat_surfaces.quadratic_strata[17]>", line 3, in <module>
        print(c.permutation_representative())
      File "sage/structure/sage_object.pyx", line 194, in sage.structure.sage_object.SageObject.__repr__ (build/cythonized/sage/structure/sage_object.c:2473)
        result = reprfunc()
      File "/usr/share/miniconda/envs/test/lib/python3.9/site-packages/surface_dynamics/interval_exchanges/template.py", line 938, in _repr_
        return str(f(*self._repr_options))
      File "/usr/share/miniconda/envs/test/lib/python3.9/site-packages/surface_dynamics/interval_exchanges/template.py", line 1065, in str
        return sep.join([' '.join(l0), ' '.join(l1)])
    TypeError: sequence item 6: expected str instance, int found