Skip to content

webknossos.client.context

Authentication & Server Context

When interacting with a WEBKNOSSOS server, you might need to specify your user token to authenticate yourself. You can copy your token from

https://webknossos.org/auth/token

Using the same methods, you can also specify the webknossos-server if you are not using the default webknossos.org instance, as well as a timeout for network requests (default is 30 minutes).

There are the following four options to specify which server context to use:

  1. Specifying the context in code using the webknossos_context contextmanager in a with statement:

    with webknossos_context(token="my_webknossos_token"):
       # code that interacts with webknossos
    

    For more information about the with statement and contextmanagers, please see this tutorial.

  2. You may specify your settings as environment variables WK_TOKEN and WK_URL:

    WK_TOKEN="my_webknossos_token" python my-script.py
    
  3. You can also specify those environment variables in a .env file in your working directory. Environment variables set in the command line take precedence.

    # content of .env
    WK_TOKEN="my_webknossos_token"
    WK_URL="…"
    WK_TIMEOUT="3600"  # in seconds
    
  4. If nothing else is specified and authentication is needed, you are asked interactively for a token, which is used for subsequent interactions in the same python run as well.

class webknossos_context(contextlib.ContextDecorator):
webknossos_context( url: Union[str, NoneType] = None, token: Union[str, NoneType] = None, timeout: Union[int, NoneType] = None)

Returns a new WEBKNOSSOS server contextmanager. Use with the with statement:

with webknossos_context(token="my_webknossos_token"):
    # code that interacts with webknossos

Or as a decorator:

@webknossos_context(token="my_webknossos_token")
def my_func():
    # code that interacts with webknossos

You can specify the following arguments:

url and timeout are taken from the previous context (e.g. environment variables) if not specified. token must be set explicitly, it is not available when not specified.