= Sage Doc Day 3 = '''Saturday, August 30, 2008''' We will focus mostly on doctests Doc Days 3. Our goal is to raise the coverage score for the Sage library to 60%, since this is a central goal for September. We need about 460 new doctests to get to 60% coverage (compared to mabshoff's 3.1.2.alpha3 merge tree as of 10am PST) == Meetups == == Names == Add your name here if you're going to be involved, and mention what Sage module you're going to work on! * Timothy Clemans, hand-tests for the notebook * Michael Abshoff: merging and reviewing patches == Modules == Coverage scores by module for sage-3.1.2.alpha2 I made this with the following script run in devel/sage/sage/: {{{ #!/usr/bin/python import os for D in os.listdir('.'): if os.path.isdir(D): cmd = "cd %s; sage -coverage .|tail -2"%D r = os.popen(cmd).read() r = r.lstrip() print D.upper() + ": " + r }}} {{{ PROBABILITY: Overall weighted coverage score: 3.0% Total number of functions: 30 GRAPHS: Overall weighted coverage score: 94.6% Total number of functions: 478 MISC: Overall weighted coverage score: 45.5% Total number of functions: 641 PLOT: Overall weighted coverage score: 23.2% Total number of functions: 626 CATEGORIES: Overall weighted coverage score: 14.4% Total number of functions: 313 STATS: Overall weighted coverage score: 100.0% Total number of functions: 41 CRYPTO: Overall weighted coverage score: 69.5% Total number of functions: 220 GAMES: Overall weighted coverage score: 33.0% Total number of functions: 3 ALGEBRAS: Overall weighted coverage score: 41.9% Total number of functions: 313 FINANCE: Overall weighted coverage score: 100.0% Total number of functions: 85 TESTS: Overall weighted coverage score: 0.0% Total number of functions: 135 GEOMETRY: Overall weighted coverage score: 87.7% Total number of functions: 131 CODING: Overall weighted coverage score: 84.9% Total number of functions: 150 GSL: Overall weighted coverage score: 29.9% Total number of functions: 80 LFUNCTIONS: Overall weighted coverage score: 52.0% Total number of functions: 38 PARALLEL: Overall weighted coverage score: 75.0% Total number of functions: 8 COMBINAT: Overall weighted coverage score: 97.5% Total number of functions: 2682 QUADRATIC_FORMS: Overall weighted coverage score: 32.0% Total number of functions: 50 MONOIDS: Overall weighted coverage score: 54.8% Total number of functions: 87 FUNCTIONS: Overall weighted coverage score: 58.1% Total number of functions: 412 LIBS: Overall weighted coverage score: 58.1% Total number of functions: 1116 CALCULUS: Overall weighted coverage score: 53.2% Total number of functions: 511 MATRIX: Overall weighted coverage score: 64.2% Total number of functions: 722 SCHEMES: Overall weighted coverage score: 49.3% Total number of functions: 863 INTERFACES: Overall weighted coverage score: 39.5% Total number of functions: 1183 SERVER: Overall weighted coverage score: 28.3% Total number of functions: 995 RINGS: Overall weighted coverage score: 58.1% Total number of functions: 5267 GROUPS: Overall weighted coverage score: 59.3% Total number of functions: 462 MEDIA: Overall weighted coverage score: 0.0% Total number of functions: 26 CATALOGUE: SETS: Overall weighted coverage score: 81.2% Total number of functions: 72 NUMERICAL: Overall weighted coverage score: 85.0% Total number of functions: 7 DATABASES: Overall weighted coverage score: 19.3% Total number of functions: 221 LOGIC: Overall weighted coverage score: 16.0% Total number of functions: 18 MODULES: Overall weighted coverage score: 67.8% Total number of functions: 413 STRUCTURE: Overall weighted coverage score: 35.4% Total number of functions: 577 EXT: Overall weighted coverage score: 60.1% Total number of functions: 78 MODULAR: Overall weighted coverage score: 67.2% Total number of functions: 1347 }}} === Files with 0% Coverage === The snapshot is from 3.1.2.alpha2. interfaces looks much better in the soon to be released 3.1.2.alpha3. These are all candidates for buggy/dead code. {{{ algebras/quaternion_order_element.py: 0% (0 of 8) algebras/quaternion_order_ideal.py: 0% (0 of 6) algebras/algebra_order_frac_ideal.py: 0% (0 of 17) algebras/all.py: 0% (0 of 1) algebras/algebra_order_ideal.py: 0% (0 of 21) algebras/free_algebra_quotient_element.py: 0% (0 of 13) algebras/algebra_ideal.py: 0% (0 of 19) algebras/algebra_order_element.py: 0% (0 of 13) algebras/algebra_order_ideal_element.py: 0% (0 of 1) algebras/algebra_ideal_element.py: 0% (0 of 1) algebras/quaternion_order_ideal_element.py: 0% (0 of 1) algebras/algebra_element.py: 0% (0 of 1) algebras/quaternion_order.py: 0% (0 of 9) algebras/algebra_order.py: 0% (0 of 16) all_cmdline.py: 0% (0 of 1) all.py: 0% (0 of 2) categories/action.pyx: 0% (0 of 31) categories/morphism.pyx: 0% (0 of 21) combinat/posets/lattices.py: 0% (0 of 13) crypto/cryptosystem.py: 0% (0 of 9) crypto/mq/mpolynomialsystemgenerator.py: 0% (0 of 10) crypto/cipher.py: 0% (0 of 9) databases/install.py: 0% (0 of 8) databases/conway.py: 0% (0 of 7) databases/tables.py: 0% (0 of 6) databases/stein_watkins.py: 0% (0 of 15) databases/lincodes.py: 0% (0 of 1) databases/compressed_storage.py: 0% (0 of 7) databases/kohel.py: 0% (0 of 7) databases/symbolic_data.py: 0% (0 of 7) databases/db.py: 0% (0 of 21) databases/odlyzko.py: 0% (0 of 1) databases/conv.py: 0% (0 of 8) databases/bz2Pickle.py: 0% (0 of 4) databases/gamma0wt2.py: 0% (0 of 7) databases/db_modular_polynomials.py: 0% (0 of 11) ext/sig.pyx: 0% (0 of 1) ext/multi_modular.pyx: 0% (0 of 15) ext/arith.pyx: 0% (0 of 7) functions/spike_function.py: 0% (0 of 9) graphs/linearextensions.py: 0% (0 of 7) groups/pari_group.py: 0% (0 of 7) groups/matrix_gps/homset.py: 0% (0 of 3) groups/group_homset.py: 0% (0 of 6) gsl/ode.pyx: 0% (0 of 5) gsl/interpolation.pyx: 0% (0 of 9) gsl/gsl_array.pyx: 0% (0 of 6) gsl/callback.pyx: 0% (0 of 1) interfaces/get_sigs.py: 0% (0 of 3) interfaces/mupad.py: 0% (0 of 29) interfaces/lisp.py: 0% (0 of 32) interfaces/tests.py: 0% (0 of 3) interfaces/gnuplot.py: 0% (0 of 11) interfaces/cleaner.py: 0% (0 of 2) interfaces/povray.py: 0% (0 of 3) interfaces/gfan.py: 0% (0 of 1) interfaces/mwrank.py: 0% (0 of 8) interfaces/tachyon.py: 0% (0 of 4) interfaces/quit.py: 0% (0 of 3) interfaces/psage.py: 0% (0 of 13) interfaces/magma_sim.py: 0% (0 of 1) libs/linbox/linbox.pyx: 0% (0 of 10) libs/pari/functional.py: 0% (0 of 191) libs/pari/gen_py.py: 0% (0 of 2) libs/pari/bg.py: 0% (0 of 1) libs/libecm.pyx: 0% (0 of 1) matrix/benchmark.py: 0% (0 of 29) matrix/solve.pyx: 0% (0 of 2) matrix/docs.py: 0% (0 of 3) matrix/matrix_misc.py: 0% (0 of 1) matrix/matrix_window.pyx: 0% (0 of 8) matrix/matrix_integer_sparse.pyx: 0% (0 of 7) matrix/matrix_integer_2x2.pyx: 0% (0 of 13) media/channels.pyx: 0% (0 of 1) media/wav.py: 0% (0 of 25) misc/mathml.py: 0% (0 of 7) misc/pager.py: 0% (0 of 2) misc/sh.py: 0% (0 of 3) misc/benchmark.py: 0% (0 of 9) misc/darcs.py: 0% (0 of 23) misc/multireplace.py: 0% (0 of 1) misc/typecheck.py: 0% (0 of 7) misc/cache.py: 0% (0 of 6) misc/all.py: 0% (0 of 3) misc/func_persist.py: 0% (0 of 3) misc/defaults.py: 0% (0 of 3) misc/cython_c.pyx: 0% (0 of 1) misc/viewer.py: 0% (0 of 6) misc/log.py: 0% (0 of 42) misc/copying.py: 0% (0 of 3) misc/db.py: 0% (0 of 5) misc/search.pyx: 0% (0 of 1) misc/attach.py: 0% (0 of 2) misc/preparser_ipython.py: 0% (0 of 4) misc/getusage.py: 0% (0 of 4) misc/dist.py: 0% (0 of 1) misc/persist.py: 0% (0 of 4) misc/profiler.py: 0% (0 of 5) misc/file_to_worksheet.py: 0% (0 of 1) modular/hecke/element.py: 0% (0 of 11) modular/hecke/homspace.py: 0% (0 of 3) modular/hecke/morphism.py: 0% (0 of 6) modular/modsym/g1list.py: 0% (0 of 6) modular/modsym/element.py: 0% (0 of 15) modular/modsym/modular_symbols.py: 0% (0 of 12) modular/modsym/ghlist.py: 0% (0 of 6) modular/modsym/heilbronn.pyx: 0% (0 of 14) modules/free_module_morphism.py: 0% (0 of 3) monoids/monoid.py: 0% (0 of 2) plot/tri_plot.py: 0% (0 of 20) plot/java3d.py: 0% (0 of 1) plot/texture.py: 0% (0 of 6) plot/graph.py: 0% (0 of 80) plot/plot3dsoya.py: 0% (0 of 15) quadratic_forms/genera/genus.py: 0% (0 of 34) rings/field_element.py: 0% (0 of 1) rings/integer_ring_python.py: 0% (0 of 1) rings/euclidean_domain.py: 0% (0 of 1) rings/dedekind_domain.py: 0% (0 of 1) rings/integral_domain.py: 0% (0 of 1) rings/padics/padic_lazy_ring_generic.py: 0% (0 of 1) rings/padics/padic_ring_generic.py: 0% (0 of 6) rings/padics/padic_lazy_field_generic.py: 0% (0 of 1) rings/padics/padic_ext_element.pyx: 0% (0 of 1) rings/padics/padic_extension_generic.py: 0% (0 of 20) rings/padics/padic_lazy_generic.py: 0% (0 of 2) rings/padics/rigid_functions.pyx: 0% (0 of 37) rings/padics/padic_ring_base_generic.py: 0% (0 of 3) rings/padics/padic_extension_leaves.py: 0% (0 of 8) rings/padics/capped_relative_generic.py: 0% (0 of 1) rings/padics/padic_ring_fixed_mod.py: 0% (0 of 5) rings/padics/lazy_generic.py: 0% (0 of 3) rings/padics/padic_ring_capped_absolute.py: 0% (0 of 5) rings/padics/unramified_extension_generic.py: 0% (0 of 20) rings/padics/padic_field_generic.py: 0% (0 of 14) rings/padics/capped_absolute_generic.py: 0% (0 of 1) rings/padics/padic_ring_capped_relative.py: 0% (0 of 5) rings/padics/fixed_mod_generic.py: 0% (0 of 1) rings/padics/eisenstein_extension_generic.py: 0% (0 of 26) rings/padics/misc.py: 0% (0 of 2) rings/padics/valuation.py: 0% (0 of 114) rings/padics/padic_lazy_element.py: 0% (1 of 110) rings/padics/padic_base_generic_element.pyx: 0% (0 of 1) rings/principal_ideal_domain_element.py: 0% (0 of 1) rings/bernoulli.py: 0% (0 of 2) rings/dedekind_domain_element.py: 0% (0 of 1) rings/big_oh.py: 0% (0 of 1) rings/coerce_python.py: 0% (0 of 5) rings/memory.pyx: 0% (0 of 1) rings/commutative_ring.py: 0% (0 of 1) rings/number_field/maps.py: 0% (0 of 50) rings/sparse_poly.pyx: 0% (0 of 41) rings/field.py: 0% (0 of 1) rings/ideal_monoid.py: 0% (0 of 6) rings/real_interval_field.py: 0% (0 of 4) rings/integral_domain_element.py: 0% (0 of 1) rings/polynomial/polynomial_fateman.py: 0% (0 of 3) rings/polynomial/polynomial_compiled.pyx: 0% (0 of 19) rings/commutative_ring_element.py: 0% (0 of 1) rings/commutative_algebra.py: 0% (0 of 1) rings/euclidean_domain_element.py: 0% (0 of 1) rings/principal_ideal_domain.py: 0% (0 of 1) schemes/plane_quartics/quartic_constructor.py: 0% (0 of 1) schemes/plane_quartics/quartic_generic.py: 0% (0 of 3) schemes/hyperelliptic_curves/constructor.py: 0% (0 of 1) schemes/hyperelliptic_curves/hyperelliptic_rational_field.py: 0% (0 of 2) schemes/hyperelliptic_curves/jacobian_g2.py: 0% (0 of 1) schemes/hyperelliptic_curves/jacobian_generic.py: 0% (0 of 5) schemes/hyperelliptic_curves/kummer_surface.py: 0% (0 of 1) schemes/hyperelliptic_curves/hyperelliptic_g2_generic.py: 0% (0 of 4) schemes/hyperelliptic_curves/jacobian_constructor.py: 0% (0 of 1) schemes/jacobians/abstract_jacobian.py: 0% (0 of 6) schemes/generic/point.py: 0% (0 of 15) schemes/generic/glue.py: 0% (0 of 3) schemes/generic/divisor_group.py: 0% (0 of 8) schemes/generic/hypersurface.py: 0% (0 of 7) schemes/generic/ambient_space.py: 0% (0 of 16) schemes/elliptic_curves/sea.py: 0% (0 of 1) schemes/elliptic_curves/rational_torsion.py: 0% (0 of 3) schemes/elliptic_curves/kodaira_symbol.py: 0% (0 of 5) schemes/elliptic_curves/magma_3descent.py: 0% (0 of 2) schemes/elliptic_curves/mod5family.py: 0% (0 of 1) schemes/elliptic_curves/padic_height.py: 0% (0 of 6) schemes/elliptic_curves/ell_padic.py: 0% (0 of 3) server/notebook/applet.py: 0% (0 of 2) server/notebook/colorize.py: 0% (0 of 4) server/notebook/js.py: 0% (0 of 10) server/notebook/tutorial.py: 0% (0 of 1) server/notebook/wiki2html.py: 0% (0 of 60) server/notebook/keyboards.py: 0% (0 of 10) server/notebook/avatars.py: 0% (0 of 12) server/notebook/register.py: 0% (0 of 3) server/notebook/smtpsend.py: 0% (0 of 5) server/notebook/user_db.py: 0% (0 of 3) server/notebook/worksheet_conf.py: 0% (0 of 1) server/notebook/compress/SourceMap.py: 0% (0 of 4) server/notebook/compress/BaseConvert.py: 0% (0 of 3) server/notebook/compress/JavaScriptCompressor.py: 0% (0 of 15) server/notebook/gnutls_socket_ssl.py: 0% (0 of 5) server/notebook/run_notebook.py: 0% (0 of 6) server/notebook/jquery.py: 0% (0 of 4) server/notebook/mailsender.py: 0% (0 of 10) server/notebook/template.py: 0% (0 of 5) server/notebook/server_conf.py: 0% (0 of 1) server/notebook/user_conf.py: 0% (0 of 1) server/notebook/conf.py: 0% (0 of 6) server/notebook/guard.py: 0% (0 of 31) server/trac/trac.py: 0% (0 of 2) server/introspect.py: 0% (0 of 4) server/wiki/moin.py: 0% (0 of 4) sets/primes.py: 0% (0 of 7) structure/element_py.py: 0% (0 of 1) structure/element_verify.py: 0% (0 of 10) structure/nonexact.py: 0% (0 of 3) structure/wrapper_parent.pyx: 0% (0 of 13) structure/gens_py.py: 0% (0 of 2) tests/benchmark.py: 0% (0 of 135) }}}