Documentation
¶
Overview ¶
Package python resolves CPython releases from the official python.org downloads API. The API is a single, anonymous JSON array of every release, each carrying a publication date (so cooldown applies) and a prerelease flag, with the version embedded in a "Python X.Y.Z" name.
The version's "Python " prefix is stripped and the result parsed to canonical semver, which restores the dash a python.org prerelease omits (3.15.0b3 -> 3.15.0-b3) so it orders and scheme-matches like any other prerelease.
Index ¶
- type Option
- type Provider
- func (p *Provider) Dated()
- func (p *Provider) Describe(r provider.Resource) string
- func (p *Provider) Discover(ctx context.Context, r provider.Resource) ([]model.Candidate, error)
- func (p *Provider) Keys() []provider.Key
- func (p *Provider) Name() string
- func (p *Provider) Resource(_ directive.Directive) (provider.Resource, error)
- func (p *Provider) URL(r provider.Resource, c model.Candidate) string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Option ¶
type Option func(*Provider)
Option configures a Provider.
func WithTransport ¶
func WithTransport(rt http.RoundTripper) Option
WithTransport overrides the HTTP transport, for tests.
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider resolves CPython versions from python.org's public, unauthenticated downloads API. The API is a single JSON array of every release, so the provider fetches it once and lets the framework own selection; it lists candidates and tags each with the publication date the API returns for free, which cooldown consumes.
func New ¶
New returns the Python provider. The downloads API is public and publishes no rate-limit headers, so the client is a plain cached one with no ratelimit wrapper or credentials.
func (*Provider) Dated ¶ added in v0.2.9
func (p *Provider) Dated()
Dated marks the listing as date-bearing: every release carries a publication date, so cooldown applies.
func (*Provider) Discover ¶
Discover lists candidate CPython versions, reading the downloads API in one fetch. The API returns the whole release history in a single response, so there is no pagination and nothing is ever left unread - --deep has no work to do here.
func (*Provider) Keys ¶
Keys reports the directive keys the provider accepts. python.org needs none of its own: the whole listing arrives in one fetch and it publishes no per-platform options.
func (*Provider) Resource ¶
Resource validates a directive into a Python resource. python.org takes no provider-specific keys, so every directive resolves to the same descriptor.