PyPI changelog between two versions of a Python package
PyPI changelog between two versions of a Python package: the full release notes of every version in the range (newest first, up to 100) from the project's changelog file and GitHub releases, with publish dates, bump type, yanked flags, extracted breaking changes and Requires-Python / dependency changes. One call instead of reading a long HISTORY or CHANGES file before a Python package upgrade.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://upgrade-brief.shopttyass-85f.workers.dev/pypi/changelog
| Category | Code and developer |
|---|---|
| Provider host | upgrade-brief.shopttyass-85f.workers.dev |
| Networks | eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"from": "2.3.3",
"package": "flask",
"to": "3.0.0"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"additionalProperties": false,
"properties": {
"from": {
"description": "Version you are on now: exact ('1.10.13', '2.0'), or a major/minor prefix ('1', '4.2') resolved to its newest stable release (PEP 440)",
"type": "string"
},
"maxVersions": {
"default": 30,
"description": "Newest N versions of the range to return notes for",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"package": {
"description": "PyPI project name, e.g. 'pydantic', 'django' or 'flask'",
"type": "string"
},
"prereleases": {
"default": "false",
"description": "Include alpha/beta/rc/canary versions in the range",
"enum": [
"true",
"false"
],
"type": "string"
},
"to": {
"default": "latest",
"description": "Target version (exact or prefix). Default: the latest stable release ('latest')",
"type": "string"
}
},
"required": [
"package",
"from"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"asOf": {
"type": "string"
},
"attribution": {
"type": "string"
},
"degraded": {
"description": "true when GitHub was read without an API token (fewer release notes reachable)",
"type": "boolean"
},
"from": {
"type": "string"
},
"fromPublishedAt": {
"description": "ISO date",
"type": [
"string",
"null"
]
},
"includesPrereleases": {
"type": "boolean"
},
"latest": {
"description": "Latest stable version",
"type": [
"string",
"null"
]
},
"manifestChanges": {
"description": "Differences between the two versions' PyPI metadata (Requires-Python, required dependencies)",
"properties": {
"dependencies": {
"type": "object"
},
"flags": {
"items": {
"type": "string"
},
"type": "array"
},
"requiresPython": {
"type": "object"
}
},
"type": [
"object",
"null"
]
},
"migrationGuides": {
"description": "Migration / upgrade guide links found in the notes",
"items": {
"type": "string"
},
"type": "array"
},
"notes": {
"items": {
"type": "string"
},
"type": "array"
},
"package": {
"type": "string"
},
"releases": {
"description": "Newest first",
"items": {
"properties": {
"breaking": {
"items": {
"type": "string"
},
"type": "array"
},
"bump": {
"type": "string"
},
"deprecated": {
"description": "npm deprecation message",
"type": [
"string",
"null"
]
},
"notes": {
"description": "Release notes (markdown), up to 6,000 characters",
"type": [
"string",
"null"
]
},
"publishedAt": {
"description": "ISO date",
"type": [
"string",
"null"
]
},
"source": {
"description": "changelog (npm package) | changelog (repository) | github-release",
"type": [
"string",
"null"
]
},
"sourceUrl": {
"description": "URL",
"type": [
"string",
"null"
]
},
"truncated": {
"type": "boolean"
},
"version": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"repository": {
"description": "Source repository URL",
"type": [
"string",
"null"
]
},
"sources": {
"items": {
"type": "string"
},
"type":