mem_limit & cpu_limit are traitlets on the parent
Spawner class. Setting these here allows plugins to
do the dangerous job of swapping the SystemdSpawner
out for something else
No two ways to set authenticator options - just one way.
It's slightly 'ugly' because of the mixing of camel case &
snake case, but is worth the massive reductions in complexity!
- Removes all need for special casing authenticators.
- Install them in hub environment, directly start using them.
- Consider if we should special case any *at all*
We don't wanna explicitly map keys from the YAML to traitlet
config for the authentication - that's a lot of busywork for no
gain. We instead switch to using snake_case everywhere, and
dynamically set traitlet config from YAML config!
- Helps protect against users named 'root'
- Makes it clearer that you should not rely on these users
for general PAM work, because they are prefixed.
Fixes#9
With firstuseauthenticator, users need to be manually created
in the admin console before they can log in. This makes for a
far more secure default experience.
- Load config only once at startup.
A lot of jupyterhub config (like user lists) take effect only at
startup, so live reload is not super useful. It will make the
software more complex, so let's not do it.
- Add pyyaml as a dependency of tljh.
- Remove escapism dependency since it is not actually used