pyramid-introspector
Extract route and view metadata from Pyramid applications, with an extension system that handles library-specific introspection for Cornice and pycornmarsh.
Why
Pyramid's introspectable registry holds rich metadata about routes and views, but extracting it -- especially when libraries like Cornice and pycornmarsh layer their own conventions on top -- requires non-trivial, repetitive code. This library provides a single, tested entry point for that work.
Installation
pip install pyramid-introspector
With Cornice/Marshmallow support:
pip install pyramid-introspector[cornice]
Quick start
from pyramid.config import Configurator
from pyramid_introspector import PyramidIntrospector
config = Configurator()
# ... add routes, views, include cornice, etc.
config.commit()
introspector = PyramidIntrospector(config.registry)
routes = introspector.introspect()
for route in routes:
for view in route.views:
print(f"{view.method:6} {route.pattern}")
if view.request_schema:
print(f" body: {view.request_schema.name}")
if view.response_schema:
print(f" resp: {view.response_schema.name}")
What you get
Each RouteInfo contains:
| Field | Type | Description |
|---|---|---|
name |
str |
Pyramid route name |
pattern |
str |
URL pattern (e.g. /items/{id}) |
views |
list[ViewInfo] |
One per HTTP method |
factory |
Any |
Route factory for ACL contexts |
extra |
dict |
Extension-specific route metadata |
Each ViewInfo contains:
| Field | Type | Description |
|---|---|---|
method |
str |
HTTP method (GET, POST, ...) |
callable |
Any |
The Python view function |
permission |
str | None |
Pyramid permission (from ACL) |
security |
str | None |
Auth scheme type (e.g. "bearer", "BearerAuth") |
description |
str |
First line of view docstring |
parameters |
list[ParameterInfo] |
Path, querystring, and body parameters |
request_schema |
SchemaInfo | None |
Marshmallow schema for request body |
querystring_schema |
SchemaInfo | None |
Marshmallow schema for querystring |
response_schema |
SchemaInfo | None |
Primary 2xx response schema |
response_schemas |
dict[int, SchemaInfo] |
All response schemas keyed by status code |
extra |
dict |
Extension-specific view metadata |
Extensions
Extensions enrich the base route/view data with library-specific metadata. Built-in extensions are loaded automatically when their dependencies are installed.
Cornice
Activated when cornice is installed. Discovers Cornice services, matches them to routes by path, and extracts Marshmallow schemas from service definitions -- both composite schemas (body/querystring/path as nested fields) and flat schemas with location detection from validators.
pycornmarsh
Activated when cornice is installed. Reads pycornmarsh predicates (pcm_request, pcm_responses, pcm_tags, pcm_summary, pcm_description, pcm_security, pcm_show) from Cornice service definition args and populates the corresponding ViewInfo fields.
Writing custom extensions
Any class that satisfies the IntrospectionExtension protocol can be used:
from pyramid_introspector.extensions import IntrospectionExtension
from pyramid_introspector.models import RouteInfo
class MyExtension:
name = "my_library"
def is_available(self) -> bool:
try:
import my_library
return True
except ImportError:
return False
def enrich(self, registry, routes: list[RouteInfo]) -> list[RouteInfo]:
# Mutate views with library-specific metadata
return routes
Pass it directly:
introspector = PyramidIntrospector(registry, extensions=[MyExtension()])
Or register it via entry points for automatic discovery:
[project.entry-points."pyramid_introspector.extensions"]
my_library = "my_package:MyExtension"
Development
git clone https://github.com/your-org/pyramid-introspector.git
cd pyramid-introspector
uv sync --group dev
Run tests:
uv run pytest
Lint and format:
uv run ruff check src/ tests/
uv run black src/ tests/
License
MIT
Metadata
Release files for pyramid-introspector 0.3.0
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 | |
|---|---|---|---|---|
| pyramid_introspector-0.3.0.tar.gz | 89.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyramid_introspector-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 103.0 kB
Release files / pyramid_introspector-0.3.0.tar.gz
| Download URL | pyramid_introspector-0.3.0.tar.gz |
|---|---|
| Size | 89.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5051bc8967757bd1f398d796a597d739dc54364212f2e48470dd40515b60bfc2
|
|
BLAKE2b-256 checksum How to use checksums |
f68669f017903c50335ac2f3d22531bc737e7d392a68074949404a3598878bab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.
Transparency logRelease files / pyramid_introspector-0.3.0-py3-none-any.whl
| Download URL | pyramid_introspector-0.3.0-py3-none-any.whl |
|---|---|
| Size | 13.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29e0bf243c0f0e3b10a5710920f254cc095b9ee4448df0141590dc4b46f35023
|
|
BLAKE2b-256 checksum How to use checksums |
5a14f5c7777b915fbaece1ee6cae45275c49c4d5780e6c2a065486d5d684caac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.
Transparency logSecurity for pyramid-introspector 0.3.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pyramid_introspector-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.
Transparency logA 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.