Of course, we need *tools for testing modularized distributions* of 
portions of the Sage library.

*1. Modularized distributions must be testable separately!*

*2. But we want to keep integration testing with other portions of Sage 
too!*

Enter "# optional", the doctest annotation that we already use whenever an 
optional package is needed for a particular test.

This mechanism can now also be used for making a doctest conditional on the 
presence of a portion of the Sage library. As 
of https://trac.sagemath.org/ticket/32649, the available tags are 
*sage.combinat*, *sage.graphs*, *sage.plot*, *sage.rings.number_field*, 
*sage.rings.real_double*, and *sage.symbolic*. It easy to add more such 
tags in src/sage/features/sagemath.py

https://trac.sagemath.org/ticket/32712 uses this mechanism for sage.tensor 
(thanks, Eric!). This package is purely algebraic and has no dependency on 
symbolics. However, there were a small number of doctests that depend on 
the Symbolic Ring for integration testing. Now ticket #32712 made them 
conditional on the presence of *sage.symbolic*: the tests are marked *# 
optional - sage.symbolic*

So how to test that this works? 

Sure, we can go into local/..../site-packages and do "rm -rf sage/symbolic" 
and test that things still work. But that's not a good way of testing.

Instead we use a *virtual environment* in which we only install a subset 
distribution of the Sage library (and its Python dependencies). The 
distribution sagemath-standard-no-symbolics, under development in 
https://trac.sagemath.org/ticket/32601, omits sage.symbolic, 
sage.functions, sage.calculus, and other packages/modules that make heavy 
use of symbolics.

This is where tox comes into play: It is the standard Python tool for 
creating disposable virtual environments for testing. Per testing 
instructions in https://trac.sagemath.org/ticket/32601, after checking out 
the ticket branch and running "./bootstrap && make build" to update the 
normal Sage distribution, we can create a separate virtual environment for 
testing sagemath-standard-no-symbolics. The command: 

$ ./sage -sh -c '(cd pkgs/sagemath-standard-no-symbolics && 
SAGE_NUM_THREADS=16 tox -v -v -v -e py39-sagewheels-nopypi)' 

will reuse all the non-Python dependencies previously built, and also reuse 
the wheels built for the Python packages in the Sage distribution. *It does 
not make any changes to the normal installation of Sage. The virtual 
environment is created in a subdirectory of 
pkgs/sagemath-standard-no-symbolics/.tox*; the whole .tox directory can be 
safely deleted at any time.

After the command finishes,  we can start the separate subset-Sage in its 
virtual environment:
$ pkgs/sagemath-standard-no-symbolics/.tox/py39-sagewheels-nopypi/bin/sage

or run some tests:
$ pkgs/sagemath-standard-no-symbolics/.tox/py39-sagewheels-nopypi/bin/sage 
-tp 4 src/sage/graphs/


-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/5b239c03-87ba-4a45-96f4-3f7e20507b6dn%40googlegroups.com.

Reply via email to