WELCOME/INTRO

PROGRAMMING IN THE NOTEBOOK

WRITING .SAGE FILES: Imports Preparser Style

WRITING .SPYX FILES: Cdefs Cimports <class_name> Interfacing with C and C++ libraries and files Tips for writing fast cython

Things that don't work in cython (yet) Point to cython wiki

PARENTS AND ELEMENTS: Intro Coercion Comparison Functions

MERCURIAL: Mercurial tutorial Referees Style

DOCUMENTATION:

ADDING TO THE SAGE LIBRARY: Browse the source Doctesting and documentation Exceptions Imports

Factories and weakrefs

Latex

_matrix_ and _vector_ Printing model Licensing Use method functions rather than global functions (eg sqrt()) how to add a directory to sage

Optional packages

TRANSITIONING SAGE LIBRARY CODE TO CYTHON: .pxd and .pxi files pickling

setup.py hash and richcmp must be written together. _sig_on and _sig_off

cpdef Crap in the build directory:

SPKGS Have someone else write this.

HIDDEN GEMS OF THE SAGE LIBRARY: c_lib setup.py sage.ext

sage.rings.integer (check out the bottom for crazy hackery)

sage.structure.element sage.structure.parent sage.structure.coerce sage.categories.morphism

APPENDIX: COERCION Assumption: Codomains are likely to become inaccessible before domains. The main exception is for subobjects, implemented with a single embedding.

Because of this assumption, we store in each Implementing morphisms Implementing Coercion morphisms