toggl-python
Typed Toggl API Python wrapper with pre-validation to avoid extra network usage.
- Based on Toggl API
- Documentation
Important Note
Migration to API V9 is currently in progress. Many methods are not implemented yet. Feel free to open an issue to escalate their development.
Install
pip install toggl-python
Usage
Fetch information about current user via TokenAuth (TOGGL_TOKEN is required):
from toggl_python.auth import TokenAuth
from toggl_python.entities.user import CurrentUser
if __name__ == "__main__":
auth = TokenAuth(token="TOGGL_TOKEN")
CurrentUser(auth=auth).me()
Basic Auth is also supported:
from toggl_python.auth import BasicAuth
from toggl_python.entities.user import CurrentUser
if __name__ == "__main__":
auth = BasicAuth(username="username", password="password")
CurrentUser(auth=auth).me()
Package supports different input formats for datetime arguments:
str:
from toggl_python.auth import TokenAuth
from toggl_python.entities.user import CurrentUser
if __name__ == "__main__":
auth = TokenAuth(token="TOGGL_TOKEN")
CurrentUser(auth=auth).get_time_entries(
start_date="2024-01-01",
end_date="2024-02-01T15:00:00-02:00",
)
datetime:
from datetime import datetime, timezone
from toggl_python.auth import TokenAuth
from toggl_python.entities.user import CurrentUser
if __name__ == "__main__":
auth = TokenAuth(token="TOGGL_TOKEN")
CurrentUser(auth=auth).get_time_entries(
start_date=datetime(2024, 1, 1, tzinfo=timezone.utc),
end_date=datetime(2024, 2, 1, 15, tzinfo=timezone.utc),
)
Query params are available as well:
from toggl_python.auth import TokenAuth
from toggl_python.entities.workspace import Workspace
if __name__ == "__main__":
auth = TokenAuth(token="TOGGL_TOKEN")
workspace_id = "WORKSPACE_ID"
Workspace(auth=auth).get_projects(active=True)
Pre-validation to avoid extra network usage:
from datetime import datetime, timezone
from toggl_python.auth import TokenAuth
from toggl_python.entities.workspace import Workspace
if __name__ == "__main__":
auth = TokenAuth(token="TOGGL_TOKEN")
workspace_id = "WORKSPACE_ID"
since = datetime(2024, 1, 20, tzinfo=timezone.utc)
# Assume that datetime.now is 2024-05-01
Workspace(auth=auth).list(since=since)
# ValidationError: Since cannot be older than 3 months
Development
poetry is required during local setup.
- Install minimal supported
Pythonversion usingpyenv-pyenv install 3.8 - Activate it for current project -
pyenv local 3.8 - Create virtual environment -
python -m venv .venv. IfPython version is not minimalthen IDE suggestions will be incorrect andpre-commithooks will not be working.
Run poetry install --no-root to setup local environment. pre-commit install is also advisable.
Unit Testing
In order to run tests using different Python versions, please follow these steps:
- Install
pyenv - Install all supported Python versions -
pyenv install 3.8.* 3.9.* ... - Run
pyenv local 3.8.* 3.9.* ... - Run
poetry run nox
To run classic unit tests, execute pytest -m "not integration"
Integration Testing
Pre-defined Workspace and Project are required to have in Toggl system.
Command TOGGL_TOKEN=... WORKSPACE_ID=... PROJECT_ID=... USER_ID=... TOGGL_PASSWORD=... pytest -m integration
Credits
This package follows evrone-python-guidelines and uses configs from evrone-django-template.
Metadata
Release files for toggl_python 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| toggl_python-0.3.2.tar.gz | 14.9 kB | Without provenance | Details for toggl_python-0.3.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| toggl_python-0.3.2-py3-none-any.whl | Python 3 | none | any | Details for toggl_python-0.3.2-py3-none-any.whl |
Total release size: 33.1 kB
Release files / toggl_python-0.3.2.tar.gz
| Download URL | toggl_python-0.3.2.tar.gz |
|---|---|
| Size | 14.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
60cf165614c0376811431c31cb391824fbe7e10efb5689938dbc759828f60b89
|
|
BLAKE2b-256 checksum How to use checksums |
38e607f0bd9fd03e82945e6524fe113f5305765e5757cf7d387271ad015888ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.5 CPython/3.12.6 Linux/6.10.10-100.fc39.x86_64
|
Release files / toggl_python-0.3.2-py3-none-any.whl
| Download URL | toggl_python-0.3.2-py3-none-any.whl |
|---|---|
| Size | 18.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f77cc8b022dc0c3727accb9aa0c1c251add862f7b464c3abbe13c79a7e04a7a2
|
|
BLAKE2b-256 checksum How to use checksums |
3982921b53000555a290ce0df21865c8d816ee5e5d7b81b9559709e2467723e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.5 CPython/3.12.6 Linux/6.10.10-100.fc39.x86_64
|
Security for toggl_python 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.