Skip to main content

Saves and loads variables to/from a IPython/Jupyter workspac

Project description

jupyter-save-load-vars

Saves and loads variables, typically to and from an IPython/Jupyter interactive notebook or other interactive workspace.

dill is often used for saving and loading from python notebooks but it fails for objects that cannot be pickled, e.g. hardware objects or generators. It also requires users to wrap the dill.dump() in a with open(file): call and does not handle restoring the variables to the workspace from the returned data from dill.load(). _ jupyter-save-load-vars_ is an attempt to make this process as simple as possible.

Usage

jupyter-save-load-vars is available from pypi and can be installed from a terminal with

pip install jupyter-save-load-vars

The pypi version may not be the lastest version.

In your code:

from jupyter_save_load_vars import savevars, loadvars # Note the use of _ for import
savevars() # saves all local variables to a default filename in local folder
loadvars() # loads them back into workspace

jupyter-save-load-vars supplies two functions

  • savevars(filename=_DEFAULT_FILENAME, vars=None, overwrite='prompt') finds all local variables, excludes In and Out and any variable that starts with '_' and just skips objects that cannot be picked.

    • By default all variables are saved. vars specifies which variables are saved. vars is either:
      1. an optional list of strings, e.g. vars=['a','b'] that are saved.
      2. a single unix-type wildcard string, e.g. vars='a*' saves all variables starting with the letter a.
    • overwrite can be 'prompt' (the default), 'yes' or True (to silently overwrite), or 'no' or False to not overwrite existing data file.
  • loadvars(filename=_DEFAULT_FILENAME, overwrite='prompt', warn=True) loads the variables back into the workspace.

    • overwrite can be 'prompt' (the default), 'yes' or True (to silently overwrite), or 'no' or False to not overwrite existing variables.
    • warn=True warns about dangers of loading data from pickles once a day; set warn=False to suppress this warning.

The filename has .dill appended if no suffix is provided.

Warning

Liike any unpickling operation, users should not loadvars from any file whose provenance is unknown. Users are warned once every 24h about this danger.

Examples:

from jupyter_save_load_vars import savevars,loadvars,printvars
a=1
b=[2,3]
c='string'
o=(i for i in []) # make generator that cannot be pickled
# define a class
class MyClass:
    name = ""
    l=[1,2,3]
cl = MyClass() # create object with this class

import functools, sys
print = functools.partial(print, flush=True, file=sys.stderr) # flush and put print() on stderr so logging comes in sequence

import time
printvars() # printvars() function is also supplied to print the local variables
time.sleep(3)
print('saving variables')
savevars('testvars')
print('deleting b,c')
del b,c
print('loading variables with prompt (default)')
loadvars('testvars') # load with prompt for overwriting existing a variable
# loadvars(filename,warn=False) # suppresses warning about unsafe unpickling
print('loading variables with no overwrite')
loadvars('testvars',overwrite='no')
print('loading variables with overwrite')
loadvars('testvars',overwrite='yes')
print([a,b,c,cl])

Output:

variables: a,b,c,o,cl,
saving variables
file testvars.dill already exists, overwrite it?  [Yes/no/always]: 
[INFO]: 2023-10-05 20:25:32,410 - saveloadvars - saved to testvars.dill variables [ a b c cl ] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 141, in savevars)
[WARNING]: 2023-10-05 20:25:32,410 - saveloadvars - could not pickle: ['o'] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 143, in savevars)
deleting b,c
loading variables with prompt (default)
[INFO]: 2023-10-05 20:25:32,412 - saveloadvars - from testvars.dill loaded variables ['a', 'b', 'c', 'cl'] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 198, in loadvars)
Overwrite existing variable "a" ?  [Yes/no/always]: a
[INFO]: 2023-10-05 20:25:37,640 - saveloadvars - overwrote existing variables ['a', 'cl'] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 232, in loadvars)
loading variables with no overwrite
[INFO]: 2023-10-05 20:25:37,641 - saveloadvars - from testvars.dill loaded variables ['a', 'b', 'c', 'cl'] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 198, in loadvars)
[INFO]: 2023-10-05 20:25:37,641 - saveloadvars - did not overwrite existing variables ['a', 'b', 'c', 'cl'] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 234, in loadvars)
loading variables with overwrite
[INFO]: 2023-10-05 20:25:37,641 - saveloadvars - from testvars.dill loaded variables ['a', 'b', 'c', 'cl'] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 198, in loadvars)
[INFO]: 2023-10-05 20:25:37,641 - saveloadvars - overwrote existing variables ['a', 'b', 'c', 'cl'] (File "F:/tobi/Dropbox (Personal)/GitHub/tobidelbruck/jupyter-save-load-vars/jupyter_save_load_vars.py", line 232, in loadvars)
[1, [2, 3], 'string', <__main__.MyClass object at 0x0000023A8AD03FA0>]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyter-save-load-vars-0.3.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jupyter_save_load_vars-0.3.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file jupyter-save-load-vars-0.3.0.tar.gz.

File metadata

  • Download URL: jupyter-save-load-vars-0.3.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.18

File hashes

Hashes for jupyter-save-load-vars-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bac8495e0e49eaf54a3f1183c0ebda49281f871f6b38356bdf7f7d19e0549355
MD5 1fa9f84b7eed50f3caeb9eea9a0ed41e
BLAKE2b-256 53451a481d1db8e294307a959c3dca03b7696bb80aca45c0661d0bfc8b666bdf

See more details on using hashes here.

File details

Details for the file jupyter_save_load_vars-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyter_save_load_vars-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 033a8e88e7dd0081ad718a4d3fb22485fb77148bbf00b01b3413576e6009c899
MD5 61fb0a1c0f9686f5a23f3fe9d88e756d
BLAKE2b-256 f5c019331a61d830900a08a5e0e868f9123f7440925152e984071169b0703bd0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page