mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-07 01:54:09 +00:00
185 lines
4.9 KiB
TOML
185 lines
4.9 KiB
TOML
# PEP 621 build info
|
|
[build-system]
|
|
requires = ["setuptools>=61", "setuptools-scm"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
# Project metadata
|
|
# ref: https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
|
|
[project]
|
|
name = "jupyterhub"
|
|
version = "5.3.0.dev"
|
|
dynamic = ["readme", "dependencies"]
|
|
description = "JupyterHub: A multi-user server for Jupyter notebooks"
|
|
authors = [
|
|
{ name = "Jupyter Development Team", email = "jupyter@googlegroups.com" },
|
|
]
|
|
keywords = ["Interactive", "Interpreter", "Shell", "Web", "Jupyter"]
|
|
license = { text = "BSD-3-Clause" }
|
|
requires-python = ">=3.8"
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: System Administrators",
|
|
"Intended Audience :: Science/Research",
|
|
"License :: OSI Approved :: BSD License",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3",
|
|
"Operating System :: POSIX",
|
|
"Framework :: Jupyter",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://hub.jupyter.org"
|
|
Documentation = "https://jupyterhub.readthedocs.io"
|
|
Funding = "https://jupyter.org/about"
|
|
Source = "https://github.com/jupyterhub/jupyterhub"
|
|
Tracker = "https://github.com/jupyterhub/jupyterhub/issues"
|
|
|
|
[project.optional-dependencies]
|
|
# note: updating test dependencies here
|
|
# may require matching updates in ci/oldest-dependencies/
|
|
test = [
|
|
"beautifulsoup4[html5lib]",
|
|
"coverage",
|
|
# cryptography is an optional dependency for jupyterhub that we test
|
|
# against by default
|
|
"cryptography",
|
|
"jsonschema",
|
|
"jupyterlab>=3",
|
|
"mock",
|
|
# nbclassic provides the '/tree/' handler that we tests against in
|
|
# the test test_nbclassic_control_panel.
|
|
"nbclassic",
|
|
"pytest>=3.3",
|
|
"pytest-asyncio>=0.17,!=0.23.*",
|
|
"pytest-cov",
|
|
"pytest-rerunfailures",
|
|
"requests-mock",
|
|
"playwright",
|
|
"virtualenv",
|
|
]
|
|
|
|
[project.scripts]
|
|
jupyterhub = "jupyterhub.app:main"
|
|
jupyterhub-singleuser = "jupyterhub.singleuser:main"
|
|
|
|
[project.entry-points."jupyterhub.authenticators"]
|
|
default = "jupyterhub.auth:PAMAuthenticator"
|
|
pam = "jupyterhub.auth:PAMAuthenticator"
|
|
dummy = "jupyterhub.auth:DummyAuthenticator"
|
|
null = "jupyterhub.auth:NullAuthenticator"
|
|
|
|
[project.entry-points."jupyterhub.proxies"]
|
|
default = "jupyterhub.proxy:ConfigurableHTTPProxy"
|
|
configurable-http-proxy = "jupyterhub.proxy:ConfigurableHTTPProxy"
|
|
|
|
[project.entry-points."jupyterhub.spawners"]
|
|
default = "jupyterhub.spawner:LocalProcessSpawner"
|
|
localprocess = "jupyterhub.spawner:LocalProcessSpawner"
|
|
simple = "jupyterhub.spawner:SimpleLocalProcessSpawner"
|
|
|
|
[tool.setuptools]
|
|
zip-safe = false
|
|
license-files = ["LICENSE"]
|
|
include-package-data = true
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = [""]
|
|
include = ["jupyterhub*"]
|
|
|
|
# dynamic sources of metadata in other files
|
|
[tool.setuptools.dynamic]
|
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
dependencies = { file = "requirements.txt" }
|
|
|
|
# setuptools_scm needs a section to be present
|
|
[tool.setuptools_scm]
|
|
# we don't actually use setuptools_scm for versions,
|
|
# only the file-finder
|
|
fallback_version = "0.0.0"
|
|
|
|
# declarative data-files doesn't quite work right
|
|
# this is still in setup.py:get_data_files
|
|
# [tool.setuptools.data-files]
|
|
# "share/jupyterhub" = ["share/jupyterhub/**"]
|
|
|
|
# ruff is our linter and formatter
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "preserve"
|
|
|
|
[tool.ruff.lint]
|
|
ignore = [
|
|
"F841", # unused variable
|
|
]
|
|
select = [
|
|
"E9", # syntax
|
|
"I", # isort
|
|
"UP", # pyupgrade
|
|
"F", # flake8
|
|
]
|
|
|
|
# djlint lints/formats our jinja templates
|
|
# https://djlint.com/docs/configuration/
|
|
[tool.djlint]
|
|
indent = 2
|
|
# ignore often-incorrect lint
|
|
# H006: image height/width attributes
|
|
# ignore style lint that formatter doesn't catch
|
|
# H008: double-quotes
|
|
# H029: form method case
|
|
ignore = "H006,H008,H021,H029"
|
|
use_gitignore = true
|
|
|
|
format_js = true
|
|
|
|
[tool.djlint.js]
|
|
indent_size = 2
|
|
|
|
# tbump is used to simplify and standardize the release process when updating
|
|
# the version, making a git commit and tag, and pushing changes.
|
|
#
|
|
# ref: https://github.com/your-tools/tbump#readme
|
|
#
|
|
[tool.tbump]
|
|
# Uncomment this if your project is hosted on GitHub:
|
|
github_url = "https://github.com/jupyterhub/jupyterhub"
|
|
|
|
[tool.tbump.version]
|
|
current = "5.3.0.dev"
|
|
|
|
# Example of a semver regexp.
|
|
# Make sure this matches current_version before
|
|
# using tbump
|
|
regex = '''
|
|
(?P<major>\d+)
|
|
\.
|
|
(?P<minor>\d+)
|
|
\.
|
|
(?P<patch>\d+)
|
|
(?P<pre>((a|b|rc)\d+)|)
|
|
\.?
|
|
(?P<dev>(?<=\.)dev\d*|)
|
|
'''
|
|
|
|
[tool.tbump.git]
|
|
message_template = "Bump to {new_version}"
|
|
tag_template = "{new_version}"
|
|
|
|
# For each file to patch, add a [[tool.tbump.file]] config
|
|
# section containing the path of the file, relative to the
|
|
# pyproject.toml location.
|
|
|
|
[[tool.tbump.file]]
|
|
src = "pyproject.toml"
|
|
search = 'version = "{current_version}"'
|
|
|
|
[[tool.tbump.file]]
|
|
src = "jupyterhub/_version.py"
|
|
version_template = '({major}, {minor}, {patch}, "{pre}", "{dev}")'
|
|
search = "version_info = {current_version}"
|
|
|
|
[[tool.tbump.file]]
|
|
src = "docs/source/_static/rest-api.yml"
|
|
search = "version: {current_version}"
|