Skip to main content

GitHub OAuth 2.0 / OAuth 2.1 identity provider implementations for Swarmauri

Project description

Swarmauri Logo

PyPI - Downloads Hits PyPI - Python Version PyPI - License PyPI - swarmauri_auth_idp_github Discord

Swarmauri Auth IDP GitHub

GitHub OAuth 2.0 / 2.1 logins and installation token helpers packaged for Swarmauri deployments.

Features

  • PKCE-enabled Authorization Code flows with HMAC-signed state payloads.
  • Token exchange helpers that return normalized identity payloads for downstream services.
  • Profile enrichment that fetches the authenticated user's primary verified email.
  • Installation access tokens for GitHub Apps with automatic caching and retry-aware HTTP.
  • ComponentBase-compatible models that register under swarmauri.auth_idp entry points.

Installation

pip

pip install swarmauri_auth_idp_github

uv (project)

uv add swarmauri_auth_idp_github

uv (environment)

uv pip install swarmauri_auth_idp_github

Usage

import asyncio
from pydantic import SecretBytes, SecretStr
from swarmauri_auth_idp_github import GitHubOAuth21Login

login = GitHubOAuth21Login(
    client_id="github-client-id",
    client_secret=SecretStr("github-client-secret"),
    redirect_uri="https://app.example.com/callback",
    state_secret=SecretBytes(b"replace-with-random-bytes"),
)

async def run_flow() -> None:
    auth = await login.auth_url()
    print(auth["url"])
    # Redirect the browser to `auth["url"]`, then capture the callback `code` and `state`.
    # Later, call `login.exchange_and_identity(code, state)` inside your callback handler.

asyncio.run(run_flow())

Workflow Summary

  1. Call auth_url() and redirect the browser to the returned URL.
  2. Persist the state and verify it during the callback handler.
  3. Exchange the authorization code through exchange_and_identity() to obtain tokens and profile metadata.
  4. Instantiate GitHubOAuth21AppClient to fetch GitHub App installation tokens when acting on behalf of repositories.

Entry Points

  • swarmauri.auth_idp:GitHubOAuth20Login
  • swarmauri.auth_idp:GitHubOAuth21Login
  • swarmauri.auth_idp:GitHubOAuth20AppClient
  • swarmauri.auth_idp:GitHubOAuth21AppClient

Contributing

To contribute to swarmauri-sdk, review the guidelines for contributing which cover development workflow, testing, and coding standards.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

swarmauri_auth_idp_github-0.11.0.dev2.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file swarmauri_auth_idp_github-0.11.0.dev2.tar.gz.

File metadata

  • Download URL: swarmauri_auth_idp_github-0.11.0.dev2.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_auth_idp_github-0.11.0.dev2.tar.gz
Algorithm Hash digest
SHA256 1fa006873bb0c9d3928a4741c1ae3d44e80df8aa58ba1114c76f2db938e4acea
MD5 330ff5b288b77998acc890db323c4821
BLAKE2b-256 4706b3514cf11bcbfc719003dceefa611b7918778a775f61a52d399d47fc628d

See more details on using hashes here.

File details

Details for the file swarmauri_auth_idp_github-0.11.0.dev2-py3-none-any.whl.

File metadata

  • Download URL: swarmauri_auth_idp_github-0.11.0.dev2-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_auth_idp_github-0.11.0.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 def210b0b8483a09741171207f81c9cc83059dfdbfd74b7cfd662df9d1aa7654
MD5 ff0e1569fa1e7afd2f1976a6494f0aa0
BLAKE2b-256 2995aed044c5168b5706a464bf8f7f1d12e5532e4a6732bfedbb50a9fe8e1597

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page