Skip to main content

The official Python client for SweatStack

Project description

SweatStack Python client library

Quickstart

uv pip install sweatstack
import sweatstack as ss

ss.login()

ss.list_activities()

Authentication

SweatStack supports three authentication methods:

1. Browser-Based OAuth2 Authentication

ss.login()  # Opens your default browser for authentication

2. Direct API Key Authentication

client = ss.Client(api_key="your-api-key")

3. Environment Variable

Set the SWEATSTACK_API_KEY environment variable:

export SWEATSTACK_API_KEY="your-api-key"

SweatStack follows this priority order:

  1. Browser-based OAuth2 (ss.login())
  2. Direct API key via Client constructor
  3. SWEATSTACK_API_KEY environment variable

For example, calling ss.login() or client.login() will override any existing API key authentication, including those set through the constructor or environment variables.

Interfaces: Singleton vs Class-based

This library provides both a singleton interface and a class-based interface.

Singleton interface:

import sweatstack as ss

activities = ss.list_activities()

Class-based interface:

from sweatstack import Client

client = Client()
activities = client.list_activities()

Although both interfaces are feature-equivalent, they serve different purposes:

  • The singleton interface is the default and recommended interface. It is intended for most use cases and is the easiest to use.
  • The class-based interface is intended for more advanced use cases, such as when you need to authenticate multiple users at the same time or in multi-threaded applications.

Streamlit integration

The sweatstack.streamlit module provides a Streamlit integration for SweatStack. This requires the optional streamlit dependency that can be installed with:

uv pip install 'sweatstack[streamlit]'

The StreamlitAuth class is a Streamlit component that handles the OAuth2 authentication flow. It provides a st.authenticate() function that can be used to authenticate the user.

Example usage:

from sweatstack.streamlit import StreamlitAuth

auth = StreamlitAuth()

with st.sidebar:
    st.authenticate()

if not auth.is_authenticated():
    st.write("User is not authenticated")
    st.stop()

st.write("User is authenticated")

auth.client.get_latest_activity()

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

sweatstack-0.14.4.tar.gz (84.0 kB view details)

Uploaded Source

Built Distribution

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

sweatstack-0.14.4-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file sweatstack-0.14.4.tar.gz.

File metadata

  • Download URL: sweatstack-0.14.4.tar.gz
  • Upload date:
  • Size: 84.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.5

File hashes

Hashes for sweatstack-0.14.4.tar.gz
Algorithm Hash digest
SHA256 4bb40de76edcd13f2dde8edd8cd6d318eecf0ff9a903e71342f8f8a1e8f33870
MD5 c0f88f117b8548162928aaf69fc8af6d
BLAKE2b-256 7e1f8ef11affb8a70a3ee4eb33c23d26b2f0ad0b4f2531ad10b26b3dac6a4100

See more details on using hashes here.

File details

Details for the file sweatstack-0.14.4-py3-none-any.whl.

File metadata

  • Download URL: sweatstack-0.14.4-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.5

File hashes

Hashes for sweatstack-0.14.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b42e52e98d0d8588be96fead1942fc0ce220823f105c2831a3614ca7047f6d71
MD5 9e09465f45ea05eafa13b2264721f7a0
BLAKE2b-256 e581a7d9624f9f70ae4e369bdb1e811f9feeb51f3319654f6e18fc9282599bfa

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