mirror of
https://github.com/jupyterhub/the-littlest-jupyterhub.git
synced 2025-12-18 21:54:05 +08:00
Merge pull request #747 from consideRatio/pr/pre-adding-pre-commit-fixes
Small fixes for flake8 and other smaller pre-commit tools
This commit is contained in:
12
.flake8
Normal file
12
.flake8
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[flake8]
|
||||||
|
# Ignore style and complexity
|
||||||
|
# E: style errors
|
||||||
|
# W: style warnings
|
||||||
|
# C: complexity
|
||||||
|
# F841: local variable assigned but never used
|
||||||
|
ignore = E, C, W, F841
|
||||||
|
builtins =
|
||||||
|
c
|
||||||
|
load_subconfig
|
||||||
|
exclude =
|
||||||
|
build/
|
||||||
2
.github/integration-test.py
vendored
2
.github/integration-test.py
vendored
@@ -104,7 +104,7 @@ def run_test(image_name, test_name, bootstrap_pip_spec, test_files, upgrade, ins
|
|||||||
if upgrade:
|
if upgrade:
|
||||||
run_container_command(
|
run_container_command(
|
||||||
test_name,
|
test_name,
|
||||||
f'curl -L https://tljh.jupyter.org/bootstrap.py | python3 -'
|
'curl -L https://tljh.jupyter.org/bootstrap.py | python3 -'
|
||||||
)
|
)
|
||||||
|
|
||||||
run_container_command(
|
run_container_command(
|
||||||
|
|||||||
1
.github/workflows/integration-test.yaml
vendored
1
.github/workflows/integration-test.yaml
vendored
@@ -24,7 +24,6 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
# This job is used as a workaround to a limitation when using a matrix of
|
# This job is used as a workaround to a limitation when using a matrix of
|
||||||
# variations that a job should be executed against. The limitation is that a
|
# variations that a job should be executed against. The limitation is that a
|
||||||
# matrix once defined can't include any conditions.
|
# matrix once defined can't include any conditions.
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ def ensure_host_system_can_install_tljh():
|
|||||||
class ProgressPageRequestHandler(SimpleHTTPRequestHandler):
|
class ProgressPageRequestHandler(SimpleHTTPRequestHandler):
|
||||||
def do_GET(self):
|
def do_GET(self):
|
||||||
if self.path == "/logs":
|
if self.path == "/logs":
|
||||||
with open("/opt/tljh/installer.log", "r") as log_file:
|
with open("/opt/tljh/installer.log") as log_file:
|
||||||
logs = log_file.read()
|
logs = log_file.read()
|
||||||
|
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
|
|||||||
@@ -56,5 +56,3 @@ Enabling extensions via the command line
|
|||||||
|
|
||||||
.. image:: ../../images/admin/enable-spellcheck.png
|
.. image:: ../../images/admin/enable-spellcheck.png
|
||||||
:alt: spellcheck-interface-changes
|
:alt: spellcheck-interface-changes
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,5 +34,3 @@ If you no longer need any of your resources you can delete the entire resource g
|
|||||||
* Go to "Reosurce groups" on the left hand panel
|
* Go to "Reosurce groups" on the left hand panel
|
||||||
* Click on your resource group
|
* Click on your resource group
|
||||||
* Click on "Delete resource group" you will then be asked to confirm the operation. This operation will take between 5 and 10 minutes.
|
* Click on "Delete resource group" you will then be asked to confirm the operation. This operation will take between 5 and 10 minutes.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -97,4 +97,3 @@ Step 4: Setup HTTPS
|
|||||||
|
|
||||||
Once you are ready to run your server for real, and have a domain, it's a good
|
Once you are ready to run your server for real, and have a domain, it's a good
|
||||||
idea to proceed directly to :ref:`howto/admin/https`.
|
idea to proceed directly to :ref:`howto/admin/https`.
|
||||||
|
|
||||||
|
|||||||
@@ -27,5 +27,3 @@ This calls systemctl and restarts Traefik. The user may call systemctl and resta
|
|||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ sudo tljh-config reload hub
|
$ sudo tljh-config reload hub
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ from hubtraf.user import User
|
|||||||
from hubtraf.auth.dummy import login_dummy
|
from hubtraf.auth.dummy import login_dummy
|
||||||
import pytest
|
import pytest
|
||||||
from functools import partial
|
from functools import partial
|
||||||
import asyncio
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import os
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
@@ -39,7 +38,7 @@ def test_nbextensions():
|
|||||||
]
|
]
|
||||||
|
|
||||||
for e in extensions:
|
for e in extensions:
|
||||||
assert '{} \x1b[32m enabled \x1b[0m'.format(e) in proc.stdout.decode()
|
assert f'{e} \x1b[32m enabled \x1b[0m' in proc.stdout.decode()
|
||||||
|
|
||||||
# Ensure we have 'OK' messages in our stdout, to make sure everything is importable
|
# Ensure we have 'OK' messages in our stdout, to make sure everything is importable
|
||||||
assert proc.stderr.decode() == ' - Validating: \x1b[32mOK\x1b[0m\n' * len(extensions)
|
assert proc.stderr.decode() == ' - Validating: \x1b[32mOK\x1b[0m\n' * len(extensions)
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ from functools import partial
|
|||||||
import asyncio
|
import asyncio
|
||||||
import pwd
|
import pwd
|
||||||
import grp
|
import grp
|
||||||
import sys
|
|
||||||
import subprocess
|
import subprocess
|
||||||
from os import system
|
from os import system
|
||||||
from tljh.normalize import generate_system_username
|
from tljh.normalize import generate_system_username
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import pytest
|
|||||||
from tljh.config import (
|
from tljh.config import (
|
||||||
reload_component,
|
reload_component,
|
||||||
set_config_value,
|
set_config_value,
|
||||||
unset_config_value,
|
|
||||||
CONFIG_FILE,
|
CONFIG_FILE,
|
||||||
CONFIG_DIR,
|
CONFIG_DIR,
|
||||||
STATE_DIR,
|
STATE_DIR,
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ def test_new_user_create():
|
|||||||
# Call ensure_user to make sure the user plugin gets called
|
# Call ensure_user to make sure the user plugin gets called
|
||||||
user.ensure_user(username)
|
user.ensure_user(username)
|
||||||
|
|
||||||
with open(f"test_new_user_create") as f:
|
with open("test_new_user_create") as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
|
|
||||||
assert content == username
|
assert content == username
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ def test_ensure_pip_requirements(prefix):
|
|||||||
conda.ensure_conda_packages(prefix, ['pip'])
|
conda.ensure_conda_packages(prefix, ['pip'])
|
||||||
with tempfile.NamedTemporaryFile() as f:
|
with tempfile.NamedTemporaryFile() as f:
|
||||||
# Sample small package to test
|
# Sample small package to test
|
||||||
f.write('there'.encode())
|
f.write(b'there')
|
||||||
f.flush()
|
f.flush()
|
||||||
conda.ensure_pip_requirements(prefix, f.name)
|
conda.ensure_pip_requirements(prefix, f.name)
|
||||||
subprocess.check_call([
|
subprocess.check_call([
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
Test configurer
|
Test configurer
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from traitlets import Dict
|
|
||||||
from traitlets.config import Config
|
from traitlets.config import Config
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ def test_ensure_admins(tljh_dir, admins, expected_config):
|
|||||||
installer.ensure_admins(admins)
|
installer.ensure_admins(admins)
|
||||||
|
|
||||||
config_path = installer.CONFIG_FILE
|
config_path = installer.CONFIG_FILE
|
||||||
with open(config_path, 'r') as f:
|
with open(config_path) as f:
|
||||||
config = yaml.load(f)
|
config = yaml.load(f)
|
||||||
|
|
||||||
# verify the list was flattened
|
# verify the list was flattened
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
"""Test traefik configuration"""
|
"""Test traefik configuration"""
|
||||||
import os
|
import os
|
||||||
from unittest import mock
|
|
||||||
|
|
||||||
import toml
|
import toml
|
||||||
import pytest
|
import pytest
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ def fix_permissions(prefix):
|
|||||||
Run after each install command.
|
Run after each install command.
|
||||||
"""
|
"""
|
||||||
utils.run_subprocess(
|
utils.run_subprocess(
|
||||||
["chown", "-R", "{}:{}".format(os.getuid(), os.getgid()), prefix]
|
["chown", "-R", f"{os.getuid()}:{os.getgid()}", prefix]
|
||||||
)
|
)
|
||||||
utils.run_subprocess(["chmod", "-R", "o-w", prefix])
|
utils.run_subprocess(["chmod", "-R", "o-w", prefix])
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ tljh-config show firstlevel.second_level
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import asyncio
|
|
||||||
from collections.abc import Sequence, Mapping
|
from collections.abc import Sequence, Mapping
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
import os
|
import os
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ def load_traefik_api_credentials():
|
|||||||
proxy_secret_path = os.path.join(STATE_DIR, 'traefik-api.secret')
|
proxy_secret_path = os.path.join(STATE_DIR, 'traefik-api.secret')
|
||||||
if not os.path.exists(proxy_secret_path):
|
if not os.path.exists(proxy_secret_path):
|
||||||
return {}
|
return {}
|
||||||
with open(proxy_secret_path, 'r') as f:
|
with open(proxy_secret_path) as f:
|
||||||
password = f.read()
|
password = f.read()
|
||||||
return {
|
return {
|
||||||
'traefik_api': {
|
'traefik_api': {
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import bcrypt
|
|||||||
import pluggy
|
import pluggy
|
||||||
import requests
|
import requests
|
||||||
from requests.packages.urllib3.exceptions import InsecureRequestWarning
|
from requests.packages.urllib3.exceptions import InsecureRequestWarning
|
||||||
from getpass import getpass
|
|
||||||
|
|
||||||
from tljh import (
|
from tljh import (
|
||||||
apt,
|
apt,
|
||||||
@@ -26,7 +25,6 @@ from tljh import (
|
|||||||
systemd,
|
systemd,
|
||||||
traefik,
|
traefik,
|
||||||
user,
|
user,
|
||||||
utils
|
|
||||||
)
|
)
|
||||||
from .config import (
|
from .config import (
|
||||||
CONFIG_DIR,
|
CONFIG_DIR,
|
||||||
@@ -227,7 +225,7 @@ def ensure_admins(admin_password_list):
|
|||||||
logger.info("Setting up admin users")
|
logger.info("Setting up admin users")
|
||||||
config_path = CONFIG_FILE
|
config_path = CONFIG_FILE
|
||||||
if os.path.exists(config_path):
|
if os.path.exists(config_path):
|
||||||
with open(config_path, 'r') as f:
|
with open(config_path) as f:
|
||||||
config = yaml.load(f)
|
config = yaml.load(f)
|
||||||
else:
|
else:
|
||||||
config = {}
|
config = {}
|
||||||
@@ -263,7 +261,7 @@ def ensure_jupyterhub_running(times=20):
|
|||||||
|
|
||||||
for i in range(times):
|
for i in range(times):
|
||||||
try:
|
try:
|
||||||
logger.info('Waiting for JupyterHub to come up ({}/{} tries)'.format(i + 1, times))
|
logger.info(f'Waiting for JupyterHub to come up ({i + 1}/{times} tries)')
|
||||||
# Because we don't care at this level that SSL is valid, we can suppress
|
# Because we don't care at this level that SSL is valid, we can suppress
|
||||||
# InsecureRequestWarning for this request.
|
# InsecureRequestWarning for this request.
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
@@ -285,7 +283,7 @@ def ensure_jupyterhub_running(times=20):
|
|||||||
# Everything else should immediately abort
|
# Everything else should immediately abort
|
||||||
raise
|
raise
|
||||||
|
|
||||||
raise Exception("Installation failed: JupyterHub did not start in {}s".format(times))
|
raise Exception(f"Installation failed: JupyterHub did not start in {times}s")
|
||||||
|
|
||||||
|
|
||||||
def ensure_symlinks(prefix):
|
def ensure_symlinks(prefix):
|
||||||
@@ -390,7 +388,7 @@ def ensure_config_yaml(plugin_manager):
|
|||||||
migrator.migrate_config_files()
|
migrator.migrate_config_files()
|
||||||
|
|
||||||
if os.path.exists(CONFIG_FILE):
|
if os.path.exists(CONFIG_FILE):
|
||||||
with open(CONFIG_FILE, 'r') as f:
|
with open(CONFIG_FILE) as f:
|
||||||
config = yaml.load(f)
|
config = yaml.load(f)
|
||||||
else:
|
else:
|
||||||
config = {}
|
config = {}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ JupyterHub config for the littlest jupyterhub.
|
|||||||
from glob import glob
|
from glob import glob
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from systemdspawner import SystemdSpawner
|
|
||||||
from tljh import configurer
|
from tljh import configurer
|
||||||
from tljh.config import INSTALL_PREFIX, USER_ENV_PREFIX, CONFIG_DIR
|
from tljh.config import INSTALL_PREFIX, USER_ENV_PREFIX, CONFIG_DIR
|
||||||
from tljh.utils import get_plugin_manager
|
from tljh.utils import get_plugin_manager
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ def ensure_traefik_binary(prefix):
|
|||||||
# verify that we got what we expected
|
# verify that we got what we expected
|
||||||
checksum = checksum_file(traefik_bin)
|
checksum = checksum_file(traefik_bin)
|
||||||
if checksum != checksums[plat]:
|
if checksum != checksums[plat]:
|
||||||
raise IOError(f"Checksum failed {traefik_bin}: {checksum} != {checksums[plat]}")
|
raise OSError(f"Checksum failed {traefik_bin}: {checksum} != {checksums[plat]}")
|
||||||
|
|
||||||
|
|
||||||
def compute_basic_auth(username, password):
|
def compute_basic_auth(username, password):
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ def ensure_user(username):
|
|||||||
subprocess.check_call([
|
subprocess.check_call([
|
||||||
'chmod',
|
'chmod',
|
||||||
'o-rwx',
|
'o-rwx',
|
||||||
expanduser('~{username}'.format(username=username))
|
expanduser(f'~{username}')
|
||||||
])
|
])
|
||||||
|
|
||||||
pm = get_plugin_manager()
|
pm = get_plugin_manager()
|
||||||
|
|||||||
0
tljh/user_creating_spawner.py
Executable file → Normal file
0
tljh/user_creating_spawner.py
Executable file → Normal file
Reference in New Issue
Block a user