chisel
Chisel is a lightweight Python WSGI application framework built for creating well-documented, schema-validated JSON web APIs.
Links
JSON APIs
Chisel provides the action decorator for easily implementing schema-validated JSON APIs.
import chisel
@chisel.action(spec='''
# Sum a list of numbers
action sum_numbers
urls
GET
query
# The list of numbers
float[len > 0] numbers
output
# The sum of the numbers
float sum
''')
def sum_numbers(ctx, req):
return {'sum': sum(req['numbers'])}
application = chisel.Application()
application.add_request(sum_numbers)
application.request('GET', '/sum_numbers', query_string='numbers.0=1&numbers.1=2&numbers.2=4')
('200 OK', [('Content-Type', 'application/json')], b'{"sum":7.0}')
Each action defines an action definition using
Schema Markdown.
The action callback is passed two arguments, a request
Context
and the schema-validated request input dictionary. The input request dictionary is created by
combining the request's URL path parameters, query string parameters, and input JSON content
parameters.
If there is a schema validation error the appropriate error code is automatically returned.
status, _, content_bytes = application.request('GET', '/sum_numbers')
'400 Bad Request'
b'{"error":"InvalidInput","message":"Required member \\"numbers\\" missing (query string)"}'
A chisel.Application is a standard WSGI application object - host it with any WSGI server. For example:
gunicorn module:application
API Documentation
You can add API documentation to your application by adding the Chisel documentation application requests from create_doc_requests.
application = chisel.Application()
application.add_requests(chisel.create_doc_requests())
By default the documentation application is hosted at "/doc/". An example of Chisel's documentation output is available.
Development
This package is developed using python-build. It was started using python-template as follows:
template-specialize python-template/template/ chisel/ -k package chisel -k name 'Craig A. Hobbs' -k email 'craigahobbs@gmail.com' -k github 'craigahobbs' -k nomain 1
Metadata
Release files for chisel 2.4.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| chisel-2.4.10.tar.gz | 245.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chisel-2.4.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 490.4 kB
Release files / chisel-2.4.10.tar.gz
| Download URL | chisel-2.4.10.tar.gz |
|---|---|
| Size | 245.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0c242b25ed3bc6620297e41e069cd7f2563b1268e4c4339207e74cd5947b8c16
|
|
BLAKE2b-256 checksum How to use checksums |
7bee18b0a6f1db5c5076c208d472e62451c1c9c226825da5dad2ed2ed533757d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / chisel-2.4.10-py3-none-any.whl
| Download URL | chisel-2.4.10-py3-none-any.whl |
|---|---|
| Size | 245.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a3ad3902612608e0a27feab6151a60f5550cdc32d267f97007c5bbf134b69b4
|
|
BLAKE2b-256 checksum How to use checksums |
4e4380e51c7b1f45896f3b2876279d558c5acb32c33abc9e272a5e93b6168825
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Security for chisel 2.4.10
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.