Python framework for building plugin‑based HTTP API servers.
Project description
nextline-graphql
(This package will be renamed in the future.)
Python framework for building plugin‑based HTTP API servers.
Table of Contents
Introduction
This package provides the framework for a plugin-based Python API server. Plugins can implement endpoints and services.
(This package will not be specific to Nextline or GraphQL and will be renamed in the future.)
How to run
The section shows how to run the Nextline backend API server. How to run the frontend web app is described elsewhere.
As a Docker container
Docker images of the Nextline backend API server are created as ghcr.io/nextline-dev/nextline-graphql. These images are created by the Dockerfile. No external plugins are included in the images.
Use, for example, the following command to run as a Docker container.
docker run -p 8080:8000 ghcr.io/nextline-dev/nextline-graphql
If you access to the API server with a web browser, you will see the GraphQL IDE: http://localhost:8080/.
To include external plugins, you can create a new Docker image with ghcr.io/nextline-dev/nextline-graphql as the base image. For example, nextline-rdb shows how to create a new Docker image with nextline-rdb as an external plugin.
In a virtual environment
You can create a virtual environment, install packages, and run the API server as follows.
python -m venv venv
source venv/bin/activate
pip install nextline-graphql
pip install uvicorn
uvicorn --lifespan on --factory --port 8080 nextline_graphql:create_app
Check with a web browser at http://localhost:8080/.
If you check out external plugins, nextline-graphql automatically detects them as plugins. An example can be described in nextline-rdb.
Configuration
nextline-graphql uses dynaconf for configuration management. The nextline-graphql framework itself has configuration for CORS and logging. The internal plugins have configurations. External plugins can extend the configuration.
CORS
These CORS (Cross-Origin Resource Sharing) settings will be given to
allow_origin and allow_headers of Starlette's
CORSMiddleware.
| Environment variable | Default value | Description |
|---|---|---|
NEXTLINE_CORS__ALLOW_ORIGINS |
['*'] |
A list of allowed origins, e.g., ["http://example.com:8080"]. The default value ("*") allows any origins. |
NEXTLINE_CORS__ALLOW_HEADERS |
['*'] |
A list of allowed HTTP request headers. For example, ['remote-user', 'remote-name', 'remote-email'] can be appropriate values if Authelia is used. Some headers such as Content-Type are always allowed (See the Starlette doc). The default value ("*") allows any headers. |
NEXTLINE_CORS__ALLOW_CREDENTIALS |
false |
Whether to support cookies. If true, the wildcard ("*") cannot be used for NEXTLINE_CORS__ALLOW_ORIGINS or NEXTLINE_CORS__ALLOW_HEADERS. They need to be listed explicitly. |
Logging
See default.toml.
graphql plugin
| Environment variable | Default value | Description |
|---|---|---|
NEXTLINE_GRAPHQL__MUTATION_ALLOW_ORIGINS |
[*] |
A list of allowed origins for GraphQL Mutations. The default value ("*") allows any origins.* |
- In addition to the CORS settings above, this setting provides further access control for GraphQL Mutations. With this setting, you can allow only GraphQL Queries and Subscriptions from certain origins while prohibiting Mutations.
ctrl plugin
| Environment variable | Default value | Description |
|---|---|---|
NEXTLINE_CTRL__TRACE_MODULES |
false |
By default (false), Nextline only traces the main Python script. If true, Nextline traces execution of imported Python modules as well. |
NEXTLINE_CTRL__TRACE_THREADS |
false |
By default (false), Nextline only traces the main thread. If true, Nextline traces execution of other threads as well. |
Check out code for development
How to check out code from GitHub for development:
git clone git@github.com:nextline-dev/nextline-graphql.git
cd nextline-graphql/
python -m venv venv
source venv/bin/activate
pip install -e ./"[tests,dev]"
To run
uvicorn --port 8080 --lifespan on --factory --reload nextline_graphql:create_app
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nextline_graphql-0.9.1.tar.gz.
File metadata
- Download URL: nextline_graphql-0.9.1.tar.gz
- Upload date:
- Size: 32.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
594b0dbc97c0b1a57994ec03e0b96b7a5ed47bc5c518bd08956237f3a5c2564e
|
|
| MD5 |
5e5d14e6bfe1fe207e891877439a2b3e
|
|
| BLAKE2b-256 |
058bbebcf73d64b4fab43b014d1ce0439b1820ee895bf13e124e8094a91dc7c0
|
Provenance
The following attestation bundles were made for nextline_graphql-0.9.1.tar.gz:
Publisher:
pypi.yml on nextline-dev/nextline-graphql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nextline_graphql-0.9.1.tar.gz -
Subject digest:
594b0dbc97c0b1a57994ec03e0b96b7a5ed47bc5c518bd08956237f3a5c2564e - Sigstore transparency entry: 725184142
- Sigstore integration time:
-
Permalink:
nextline-dev/nextline-graphql@7d608fba1d7a89cfd6efd1eef392600e67b07ba8 -
Branch / Tag:
refs/tags/v0.9.1 - Owner: https://github.com/nextline-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@7d608fba1d7a89cfd6efd1eef392600e67b07ba8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file nextline_graphql-0.9.1-py3-none-any.whl.
File metadata
- Download URL: nextline_graphql-0.9.1-py3-none-any.whl
- Upload date:
- Size: 34.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1e99dd0aa133ab09b1755db2ae1aca63757edec9851be2b050c68d4506d5fe8
|
|
| MD5 |
cfc387dac7edae27c3ec465c0311cf00
|
|
| BLAKE2b-256 |
79637aeeeb7c8bf681e8ca048ba3004b86840f3ccde9321293dcdf112866e262
|
Provenance
The following attestation bundles were made for nextline_graphql-0.9.1-py3-none-any.whl:
Publisher:
pypi.yml on nextline-dev/nextline-graphql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nextline_graphql-0.9.1-py3-none-any.whl -
Subject digest:
d1e99dd0aa133ab09b1755db2ae1aca63757edec9851be2b050c68d4506d5fe8 - Sigstore transparency entry: 725184143
- Sigstore integration time:
-
Permalink:
nextline-dev/nextline-graphql@7d608fba1d7a89cfd6efd1eef392600e67b07ba8 -
Branch / Tag:
refs/tags/v0.9.1 - Owner: https://github.com/nextline-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@7d608fba1d7a89cfd6efd1eef392600e67b07ba8 -
Trigger Event:
push
-
Statement type: