The Sage Notebook object

class sage.server.notebook.notebook.Notebook(dir, system=None, pretty_print=False, show_debug=False, address='localhost', port=8000, secure=True, server_pool=[])
DIR()
Return the absolute path to the directory that contains the Sage Notebook directory.
_Notebook__makedirs()
__init__(dir, system=None, pretty_print=False, show_debug=False, address='localhost', port=8000, secure=True, server_pool=[])
__weakref__
list of weak references to the object (if defined)
_html_body(worksheet_filename, show_debug=False, username='', top_only=False)
_html_head(worksheet_filename, username)
_import_worksheet_sws(filename, owner, verbose=True)

Import an sws format worksheet into this notebook as a new worksheet.

INPUT:

  • filename - string; a filename that ends in .sws; internally it must be a tar’d bz2’d file.
  • owner - string
  • verbose - bool (default: True) if True print some the tar command used to extract the sws file.

OUTPUT: a new worksheet

EXAMPLES: We create a notebook, then make a worksheet from a plain text file first.

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: name = tmp_filename() + '.txt'  
sage: open(name,'w').write('foo\n{{{\n2+3\n}}}')
sage: W = nb.import_worksheet(name, 'admin')
sage: W.filename()
'admin/0'

We then export the worksheet to an sws file.

sage: nb.export_worksheet(W.filename(),  'tmp.sws', verbose=False)

Now we import the sws.

sage: nb._import_worksheet_sws('tmp.sws', 'admin', verbose=False)
[Cell 0; in=2+3, out=]

Yep, it’s there now (as admin/2):

sage: nb.worksheet_names()
['admin/0', 'admin/2']
_import_worksheet_txt(filename, owner)

Import a plain text file as a new worksheet.

INPUT:

  • filename - string; a filename that ends in .txt
  • owner - string; who will own this worksheet when imported

OUTPUT: a new worksheet

EXAMPLES: We write a plain text worksheet to a file and import it using this function.

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: name = tmp_filename() + '.txt'  
sage: open(name,'w').write('foo\n{{{\na = 10\n}}}')
sage: W = nb._import_worksheet_txt(name, 'admin'); W
[Cell 0; in=a = 10, out=]
_initialize_worksheet(src, W)
src and W are worksheets and W is brand new.
_migrate_worksheets()
add_to_history(input_text)
add_to_user_history(entry, username)
add_user(username, password, email, account_type='user', force=False)

INPUT:

  • username - the username
  • password - the password
  • email - the email address
  • account_type - one of ‘user’, ‘admin’, or ‘guest’
  • force - bool

If the method get_accounts return False then user can only be added if force=True

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('Mark', 'password', ", force=True)sage: 
nb.user('Mark')
Mark
sage: nb.add_user('Sarah', 'password', ")
Traceback (most recent call last):
ValueError: creating new accounts disabled.
sage: nb.set_accounts(True)
sage: nb.add_user('Sarah', 'password', ")sage: 
nb.user('Sarah')
Sarah
backup_directory()
change_password(username, password)

INPUT:

  • username - the username
  • password - the password to change the user’s password to

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('Mark', 'password', ", force=True)sage: 
nb.user('Mark').password()
'aajfMKNH1hTm2'
sage: nb.change_password('Mark', 'different_password')
sage: nb.user('Mark').password()
'aaTlXok5npQME'
change_worksheet_key(old_key, new_key)
color()
conf()
copy_worksheet(ws, owner)
create_default_users(passwd)

Create the default users for a notebook.

INPUT:

  • passwd - a string

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: list(sorted(nb.users().iteritems()))
[('_sage_', _sage_), ('admin', admin), ('guest', guest), ('pub', pub)]
sage: list(sorted(nb.passwords().iteritems()))
[('_sage_', 'aaQSqAReePlq6'), ('admin', 'aajfMKNH1hTm2'), ('guest', 'aaQSqAReePlq6'), ('pub', 'aaQSqAReePlq6')]
sage: nb.create_default_users('newpassword')
Creating default users.
WARNING: User 'pub' already exists -- and is now being replaced.
WARNING: User '_sage_' already exists -- and is now being replaced.
WARNING: User 'guest' already exists -- and is now being replaced.
WARNING: User 'admin' already exists -- and is now being replaced.
sage: list(sorted(nb.passwords().iteritems()))
[('_sage_', 'aaQSqAReePlq6'), ('admin', 'aajH86zjeUSDY'), ('guest', 'aaQSqAReePlq6'), ('pub', 'aaQSqAReePlq6')]
create_new_worksheet(worksheet_name, username, docbrowser=False, add_to_list=True)
create_new_worksheet_from_history(name, username, maxlen=None)
create_user_with_same_password(user, other_user)

INPUT:

  • user - a string
  • other_user - a string

OUTPUT: Changes password of user to that of other_user.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('bob', 'an**d', 'bob@gmail.com', force=True)
sage: nb.user('bob').password()
'aa4Q6Jbx/MiUs'
sage: nb.add_user('mary', 'ccd', 'mary@gmail.com', force=True)
sage: nb.user('mary').password()
'aaxr0gcWJMXKU'
sage: nb.create_user_with_same_password('bob', 'mary')
sage: nb.user('bob').password() == nb.user('mary').password()
True
default_user()

Return a default login name that the user will see when confronted with the Sage notebook login page.

OUTPUT: string

Currently this returns ‘admin’ if that is the only user. Otherwise it returns the string “.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: nb.default_user()
'admin'
sage: nb.add_user('AnotherUser', 'password', ", force=True)sage: 
nb.default_user()
''
del_user(username)

Deletes the given user

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('Mark', 'password', ", force=True)sage: 
nb.user('Mark')
Mark
sage: nb.del_user('Mark')
sage: nb.user('Mark')
Traceback (most recent call last):
KeyError: "no user 'Mark'"
delete()

Delete all files related to this notebook.

This is used for doctesting mainly. This command is obviously VERY dangerous to use on a notebook you actually care about. You could easily lose all data.

EXAMPLES:

sage: tmp = tmp_dir()
sage: nb = sage.server.notebook.notebook.Notebook(tmp) 
sage: sorted(os.listdir(tmp)) 
['backups', 'nb.sobj', 'objects', 'worksheets']
sage: nb.delete()

Now the directory is gone.

sage: os.listdir(tmp)
...
OSError: [Errno 2] No such file or directory: '...
delete_doc_browser_worksheets()
delete_worksheet(filename)
Delete the given worksheet and remove its name from the worksheet list.
deleted_worksheets()
directory()
empty_trash(username)

Empty the trash for the given user.

INPUT:

  • username - a string

This empties the trash for the given user and cleans up all files associated with the worksheets that are in the trash.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('sage','sage','sage@sagemath.org',force=True)
sage: W = nb.new_worksheet_with_title_from_text('Sage', owner='sage')
sage: W.move_to_trash('sage')
sage: nb.worksheet_names()
['sage/0']
sage: nb.empty_trash('sage')
sage: nb.worksheet_names()
[]
export_worksheet(worksheet_filename, output_filename, verbose=True)

Export a worksheet with given directory filenmae to output_filename.

INPUT:

  • worksheet_filename - string
  • output_filename - string
  • verbose - bool (default: True) if True print some the tar command used to extract the sws file.

OUTPUT: creates a file on the filesystem

get_accounts()

Return __accounts

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.get_accounts()
False
sage: nb.set_accounts(True)
sage: nb.get_accounts()
True
get_all_worksheets()
get_server()
get_ulimit()
get_worksheet_names_with_collaborator(user)
get_worksheet_names_with_viewer(user)
get_worksheet_with_filename(filename)

Get the worksheet with given filename. If there is no such worksheet, raise a KeyError.

INPUT: string OUTPUT: a worksheet or KeyError

get_worksheet_with_name(name)
get_worksheets_with_collaborator(user)
get_worksheets_with_owner(owner)
get_worksheets_with_owner_that_are_viewable_by_user(owner, user)
get_worksheets_with_viewer(user)
history()
history_count()
history_count_inc()
history_html()
history_text()
history_with_start(start)
html(worksheet_filename=None, username='guest', show_debug=False, admin=False)
html_afterpublish_window(worksheet, username, addr, dtime)

Return the html code for a page dedicated to worksheet publishing after the publication of the given worksheet.

INPUT: worksheet - instance of Worksheet username - string addr - string dtime - instance of time.struct_time

html_banner()
html_banner_and_control(user, entries)
html_beforepublish_window(worksheet, username)

Return the html code for a page dedicated to worksheet publishing prior to the publication of the given worksheet.

INPUT: worksheet - instance of Worksheet username - string

html_debug_window()
html_doc(username)
html_download_or_delete_datafile(ws, username, filename)
html_edit_window(worksheet, username)

Return a window for editing worksheet.

INPUT:

  • worksheet - a worksheet
html_notebook_settings()
html_plain_text_window(worksheet, username)

Return a window that displays a plain text version of the worksheet

INPUT:

  • worksheet - a worksheet
  • username - name of the user
html_pretty_print_check_form_element(ws)
html_settings()
html_share(worksheet, username)
html_slide_controls()
html_specific_revision(username, ws, rev)
html_system_select_form_element(ws)
html_topbar(user, pub=False)
html_upload_data_window(ws, username)
html_user_control(user, entries)
html_user_settings(username)
html_worksheet_page_template(worksheet, username, title, select=None, backwards=False)
html_worksheet_revision_list(username, worksheet)
html_worksheet_settings(ws, username)
html_worksheet_topbar(worksheet, select=None, username='guest', backwards=False)
import_worksheet(filename, owner)

Upload the worksheet with name filename and make it have the given owner.

INPUT:

  • filename - a string
  • owner - a string

OUTPUT:

  • worksheet - a newly created worksheet

EXAMPLES: We create a notebook and import a plain text worksheet into it.

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: name = tmp_filename() + '.txt'  
sage: open(name,'w').write('foo\n{{{\n2+3\n}}}')
sage: W = nb.import_worksheet(name, 'admin')

W is our newly-created worksheet, with the 2+3 cell in it:

sage: W.name()
'foo'
sage: W.cell_list()
[Cell 0; in=2+3, out=]
list_window_javascript(worksheet_filenames)
max_history_length()
migrate_old()
Migrate all old worksheets, i.e., ones with no owner, to /pub.
new_worksheet_with_title_from_text(text, owner)
number_of_backups()
object_directory()
object_list_html()
objects()
passwords()

Return the username:password dictionary.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: nb.add_user('Mark', 'password', ", force=True)sage: 
list(sorted(nb.passwords().iteritems()))
[('Mark', 'aajfMKNH1hTm2'), ('_sage_', 'aaQSqAReePlq6'), ('admin', 'aajfMKNH1hTm2'), ('guest', 'aaQSqAReePlq6'), ('pub', 'aaQSqAReePlq6')]
plain_text_worksheet_html(name, prompts=True)
pretty_print(username=None)
publish_worksheet(worksheet, username)

Publish the given worksheet.

This creates a new worksheet in the pub directory with the same contents as worksheet.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('Mark','password',",force=True)sage: 
W = nb.new_worksheet_with_title_from_text('First steps', owner='Mark')
sage: nb.worksheet_names()
['Mark/0']
sage: nb.publish_worksheet(nb.get_worksheet_with_filename('Mark/0'), 'Mark')
<BLANKLINE>
[Cell 0; in=, out=]
sage: sorted(nb.worksheet_names())
['Mark/0', 'pub/0']
quit()
quit_idle_worksheet_processes()
save(filename=None, verbose=False)
scratch_worksheet()
server_pool()
set_accounts(value)

Changes __accounts to value

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.get_accounts()
False
sage: nb.set_accounts(True)
sage: nb.get_accounts()
True
sage: nb.set_accounts(False)
sage: nb.get_accounts()
False
set_color(color)
set_debug(show_debug)
set_directory(dir)
set_not_computing()
set_pretty_print(pretty_print)
set_server_pool(servers)
set_system(system)
set_ulimit(ulimit)
system(username=None)
user(username)

Return an instance of the User class given the username of a user in a notebook.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: nb.user('admin')
admin
sage: nb.user('admin')._User__email
''
sage: nb.user('admin')._User__password
'aajfMKNH1hTm2'
user_conf(username)

Return a user’s configuration.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: config = nb.user_conf('admin')
sage: config['max_history_length']
1000
sage: config['default_system']
'sage'
sage: config['autosave_interval']
3600
sage: config['default_pretty_print']
False
user_exists(username)

Return whether or not a user exists given a username.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: nb.user_exists('admin')
True
sage: nb.user_exists('pub')
True
sage: nb.user_exists('mark')
False
sage: nb.user_exists('guest')
True
user_history(username)
user_history_text(username, maxlen=None)
user_is_admin(user)

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('Administrator', 'password', ", 'admin', True)sage: 
nb.add_user('RegularUser', 'password', ", 'user', True)sage: 
nb.user_is_admin('Administrator')
True
sage: nb.user_is_admin('RegularUser')
False
user_is_guest(username)

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: nb.user_is_guest('guest')
True
sage: nb.user_is_guest('admin')
False
user_list()

Return list of user objects.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: sorted(nb.user_list(), key=lambda k: k.username())
[_sage_, admin, guest, pub]
usernames()

Return list of usernames.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: sorted(nb.usernames())
['_sage_', 'admin', 'guest', 'pub']
users()

Return dictionary of users in a notebook.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: list(sorted(nb.users().iteritems()))
[('_sage_', _sage_), ('admin', admin), ('guest', guest), ('pub', pub)]
valid_login_names()

Return list of users that can be signed in.

EXAMPLES:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.create_default_users('password')
Creating default users.
sage: nb.valid_login_names()
['admin']
sage: nb.add_user('Mark', 'password', ", force=True)sage: 
nb.add_user('Sarah', 'password', ", force=True)sage: 
nb.add_user('David', 'password', ", force=True)sage: 
sorted(nb.valid_login_names())
['David', 'Mark', 'Sarah', 'admin']
worksheet_directory()
worksheet_html(filename, do_print=False)
worksheet_list_for_public(username, sort='last_edited', reverse=False, search=None)
worksheet_list_for_user(user, typ='active', sort='last_edited', reverse=False, search=None)
worksheet_names()

Return a list of all the names of worksheets in this notebook.

OUTPUT: list of strings.

EXAMPLES: We make a new notebook with two users and two worksheets, then list their names:

sage: nb = sage.server.notebook.notebook.Notebook(tmp_dir())
sage: nb.add_user('sage','sage','sage@sagemath.org',force=True)
sage: W = nb.new_worksheet_with_title_from_text('Sage', owner='sage')
sage: nb.add_user('wstein','sage','wstein@sagemath.org',force=True)
sage: W2 = nb.new_worksheet_with_title_from_text('Elliptic Curves', owner='wstein')
sage: nb.worksheet_names()
['sage/0', 'wstein/0']
sage.server.notebook.notebook.clean_name(name)
sage.server.notebook.notebook.load_notebook(dir, address=None, port=None, secure=None)

Load the notebook from the given directory, or create one in that directory if one isn’t already there.

INPUT:

  • dir - a string that defines a directory name
  • address - the address that the notebook server will listen on
  • port - the port the server listens on
  • secure - whether or not the notebook is secure
sage.server.notebook.notebook.make_path_relative(dir)
If easy, replace the absolute path dir by a relative one.
sage.server.notebook.notebook.sort_worksheet_list(v, sort, reverse)

INPUT:

  • sort - ‘last_edited’, ‘owner’, ‘rating’, or ‘name’
  • reverse - if True, reverse the order of the sort.

Previous topic

The Sage Notebook

Next topic

A Cell.

This Page