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.dev1.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.

swarmauri_auth_idp_github-0.11.0.dev1-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: swarmauri_auth_idp_github-0.11.0.dev1.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.dev1.tar.gz
Algorithm Hash digest
SHA256 bd90b507a80aebbb92f09509cdc4a5d281fb8679ae7f7fd047d98326dd1ea97b
MD5 cdbd34c92f3000a9c2a857b21e3a2a52
BLAKE2b-256 48c52c56bddf899b0adc8abb1e286595a7195728b1d1c89618f075bb35e39346

See more details on using hashes here.

File details

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

File metadata

  • Download URL: swarmauri_auth_idp_github-0.11.0.dev1-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.dev1-py3-none-any.whl
Algorithm Hash digest
SHA256 521760705c832e3abc32d64a86ccb771f80e94dd125d4c9344e104b6c2afa80a
MD5 9de29e74d41deb6c868e0ce5f2d411c7
BLAKE2b-256 69366b9dfc92fb8ae4160819b729cab5556b18eba1760e5295bd39c07b58ebdf

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