sweatstack 0.20.0__py3-none-any.whl → 0.22.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
sweatstack/client.py CHANGED
@@ -24,7 +24,21 @@ from .schemas import (
24
24
  from .utils import decode_jwt_body, make_dataframe_streamlit_compatible
25
25
 
26
26
 
27
- AUTH_SUCCESSFUL_RESPONSE = "<!DOCTYPE html><html><body><h1>Authentication successful. You can now close this window.</h1></body></html>"
27
+ AUTH_SUCCESSFUL_RESPONSE = """<!DOCTYPE html>
28
+ <html>
29
+ <head>
30
+ <style>
31
+ body { max-width: 600px; margin: 40px auto; text-align: center; }
32
+ h1 { color: #2C3E50; font-size: 24px; }
33
+ p { color: #34495E; font-size: 18px; }
34
+ </style>
35
+ </head>
36
+ <body>
37
+ <img src="https://sweatstack.no/images/sweat-stack-python-client.png" alt="SweatStack Logo" style="width: 200px; margin: 20px auto; display: block;">
38
+ <h1>Successfully authenticated with SweatStack!</h1>
39
+ <p>You have successfully authenticated using the SweatStack Python client library. You can now close this window and return to your Python environment.</p>
40
+ </body>
41
+ </html>"""
28
42
  OAUTH2_CLIENT_ID = "5382f68b0d254378"
29
43
 
30
44
 
@@ -0,0 +1,24 @@
1
+ Metadata-Version: 2.4
2
+ Name: sweatstack
3
+ Version: 0.22.0
4
+ Summary: The official Python client for SweatStack
5
+ Author-email: Aart Goossens <aart@gssns.io>
6
+ Requires-Python: >=3.12
7
+ Requires-Dist: httpx>=0.28.1
8
+ Requires-Dist: pandas>=2.2.3
9
+ Requires-Dist: pyarrow>=19.0.0
10
+ Requires-Dist: pydantic>=2.10.5
11
+ Provides-Extra: jupyter
12
+ Requires-Dist: ipython>=8.31.0; extra == 'jupyter'
13
+ Requires-Dist: jupyterlab>=4.3.4; extra == 'jupyter'
14
+ Requires-Dist: matplotlib>=3.10.0; extra == 'jupyter'
15
+ Provides-Extra: streamlit
16
+ Requires-Dist: streamlit>=1.42.0; extra == 'streamlit'
17
+ Description-Content-Type: text/markdown
18
+
19
+ # SweatStack Python client library
20
+
21
+
22
+ This is the official Python client library for SweatStack.
23
+
24
+ Documentation can be found [here](https://sweatstack.no/python-client-library/).
@@ -1,6 +1,6 @@
1
1
  sweatstack/__init__.py,sha256=tiVfgKlswRPaDMEy0gA7u8rveqEYZTA_kyB9lJ3J6Sc,21
2
2
  sweatstack/cli.py,sha256=N1NWOgEZR2yaJvIXxo9qvp_jFlypZYb0nujpbVNYQ6A,720
3
- sweatstack/client.py,sha256=8oYnYisQHRJWdEUO_SqIf0xU48PvkInUO90LYwr98Qo,22396
3
+ sweatstack/client.py,sha256=NOLQpOBsSPmYjtZ4GgutMKTcu5efYeD_WVNHThmecIs,22918
4
4
  sweatstack/constants.py,sha256=fGO6ksOv5HeISv9lHRoYm4besW1GTveXS8YD3K0ljg0,41
5
5
  sweatstack/ipython_init.py,sha256=zBGUlMFkdpLvsNpOpwrNaKRUpUZhzaICvH8ODJgMPcI,229
6
6
  sweatstack/jupyterlab_oauth2_startup.py,sha256=eZ6xi0Sa4hO4vUanimq0SqjduHtiywCURSDNWk_I-7s,1200
@@ -11,7 +11,7 @@ sweatstack/streamlit.py,sha256=F5oQdWkcJ76Um5fRqFT5QrjpEz8v3OaiH9kMQOYktgo,4466
11
11
  sweatstack/sweatshell.py,sha256=MYLNcWbOdceqKJ3S0Pe8dwHXEeYsGJNjQoYUXpMTftA,333
12
12
  sweatstack/utils.py,sha256=HtR1NNCKus59vfgfaCSFS-tHA11mtdcuUx5lS6ZX58g,1773
13
13
  sweatstack/Sweat Stack examples/Getting started.ipynb,sha256=k2hiSffWecoQ0VxjdpDcgFzBXDQiYEebhnAYlu8cgX8,6335204
14
- sweatstack-0.20.0.dist-info/METADATA,sha256=DbpDHyf-ffe-w3whUXOdksfENiOR1ikQyfnvzVcPMYM,2962
15
- sweatstack-0.20.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
- sweatstack-0.20.0.dist-info/entry_points.txt,sha256=kCzOUQI3dqbTpEYqtgYDeiKFaqaA7BMlV6D24BMzCFU,208
17
- sweatstack-0.20.0.dist-info/RECORD,,
14
+ sweatstack-0.22.0.dist-info/METADATA,sha256=TWb9A7C1_eQdanOf2wgCLNyOe3drm0nbIhYSXdMN93U,776
15
+ sweatstack-0.22.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
16
+ sweatstack-0.22.0.dist-info/entry_points.txt,sha256=kCzOUQI3dqbTpEYqtgYDeiKFaqaA7BMlV6D24BMzCFU,208
17
+ sweatstack-0.22.0.dist-info/RECORD,,
@@ -1,116 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: sweatstack
3
- Version: 0.20.0
4
- Summary: The official Python client for SweatStack
5
- Author-email: Aart Goossens <aart@gssns.io>
6
- Requires-Python: >=3.12
7
- Requires-Dist: httpx>=0.28.1
8
- Requires-Dist: pandas>=2.2.3
9
- Requires-Dist: pyarrow>=19.0.0
10
- Requires-Dist: pydantic>=2.10.5
11
- Provides-Extra: jupyter
12
- Requires-Dist: ipython>=8.31.0; extra == 'jupyter'
13
- Requires-Dist: jupyterlab>=4.3.4; extra == 'jupyter'
14
- Requires-Dist: matplotlib>=3.10.0; extra == 'jupyter'
15
- Provides-Extra: streamlit
16
- Requires-Dist: streamlit>=1.42.0; extra == 'streamlit'
17
- Description-Content-Type: text/markdown
18
-
19
- # SweatStack Python client library
20
-
21
-
22
- # Quickstart
23
-
24
- ```
25
- uv pip install sweatstack
26
- ```
27
-
28
- ```python
29
- import sweatstack as ss
30
-
31
- ss.login()
32
-
33
- ss.list_activities()
34
- ```
35
-
36
-
37
- # Authentication
38
-
39
- SweatStack supports three authentication methods:
40
-
41
- ### 1. Browser-Based OAuth2 Authentication
42
- ```python
43
- ss.login() # Opens your default browser for authentication
44
- ```
45
-
46
- ### 2. Direct API Key Authentication
47
- ```python
48
- client = ss.Client(api_key="your-api-key")
49
- ```
50
-
51
- ### 3. Environment Variable
52
- Set the `SWEATSTACK_API_KEY` environment variable:
53
- ```bash
54
- export SWEATSTACK_API_KEY="your-api-key"
55
- ```
56
-
57
- SweatStack follows this priority order:
58
-
59
- 1. Browser-based OAuth2 (`ss.login()`)
60
- 2. Direct API key via `Client` constructor
61
- 3. `SWEATSTACK_API_KEY` environment variable
62
-
63
- For example, calling `ss.login()` or `client.login()` will override any existing API key authentication, including those set through the constructor or environment variables.
64
-
65
-
66
- ## Interfaces: Singleton vs Class-based
67
-
68
- This library provides both a singleton interface and a class-based interface.
69
-
70
- Singleton interface:
71
- ```python
72
- import sweatstack as ss
73
-
74
- activities = ss.list_activities()
75
- ```
76
-
77
- Class-based interface:
78
- ```python
79
- from sweatstack import Client
80
-
81
- client = Client()
82
- activities = client.list_activities()
83
- ```
84
-
85
- Although both interfaces are feature-equivalent, they serve different purposes:
86
- - The singleton interface is the default and recommended interface. It is intended for most use cases and is the easiest to use.
87
- - 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.
88
-
89
-
90
- ## Streamlit integration
91
-
92
- The `sweatstack.streamlit` module provides a Streamlit integration for SweatStack. This requires the optional `streamlit` dependency that can be installed with:
93
- ```
94
- uv pip install 'sweatstack[streamlit]'
95
- ```
96
-
97
- 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.
98
-
99
- Example usage:
100
-
101
- ```python
102
- from sweatstack.streamlit import StreamlitAuth
103
-
104
- auth = StreamlitAuth()
105
-
106
- with st.sidebar:
107
- st.authenticate()
108
-
109
- if not auth.is_authenticated():
110
- st.write("User is not authenticated")
111
- st.stop()
112
-
113
- st.write("User is authenticated")
114
-
115
- auth.client.get_latest_activity()
116
- ```