Change Log#

Unreleased#

v1.5#

Added#

  • Stravalib now includes types annotation, the package is PEP 561 compatible (@enadeau, #423)

  • Add: Add nox to run tests, build docs, build package wheel/sdist(@lwasser, #395, #397)

  • Type annotation for all files in the library (@enadeau, #384, #415)

  • Add blacken-docs and codespell to pre-commit & apply on docs (@lwasser, #391)

Fixed#

  • Allow parsing of activity with segment of type other that Run and Ride (@JohnScolaro, #434)

Changed#

  • Infra: Replace flake8 and isort by ruff (@enadeau, #430)

Removed#

  • Remove python 3.8 support following NEP-29 (@enadeau, #416)

Contributors to this release#

@endeau, @lwasser, @JohnScolaro

v1.4#

Fixed#

  • Apply flake8 and numpy docstrings to limiter & protocol (@lwasser, #326)

  • Update client’s stream method to warn when using unofficial parameters (@enadeau, #385)

  • Fix docstring in SleepingRateLimitRule (@enadeau)

  • Fix: rename SubscriptionCallback.validate -> SubscriptionCallback.validate_token to avoid conflict with pydantic.BaseModel (@lwasser, #394)

  • Fix: docstrings in model.py, documentation errors, findfonts warning suppression by removing opengraph (temporarily), typing updates (@lwasser, #387)

  • Fix: read the docs is breaking due to pydantic json warnings, also update python version on build and sync pr previews (@lwasser, #412)

  • Fix: update master to main in all builds (@lwasser)

Added#

  • Type annotation to client file (@enadeau, #384)

  • Add: issue templates for easier debugging / guide users (@lwasser, #408)

  • Fix: read the docs is breaking due to pydantic json warnings, also update python version on build and sync pr previews (@lwasser, #412)

  • Fix: update master to main in all builds (@lwasser)

Contributors to this release#

@endeau, @lwasser, @jsamoocha

v1.3.3#

Fixed#

  • Fix: pins pydantic to v1 in pyproject.toml dependencies (@jsamoocha, #382)

v1.3.2#

Added#

  • Add: type checking to limiter, protocol and exc file (@enadeau , #374)

Fixed#

  • Fix: two minor mistakes in documentation (@enadeau , #375)

  • Fix: pins pydantic to v1.10.6 (@lwasser, #380)

Contributors to this release#

@enadeau, @lwasser

  • Fix two minor mistakes in documentation (@enadeau , #375)

  • Add type checking to limiter, protocol and exc file (@enadeau , #374)

  • Apply flake8 and numpy docstrings to all modules limiter & protocol (@lwasser, #326)

v1.3.1#

Added#

  • Add: Add field override in class Segment to support all activity types (@solorisx, #368)

Fixed#

  • Fix: Bumps Flask version in example code (@jsamoocha, #366)

Contributors to this release#

@solorisx, @jsamoocha

v1.3.0#

Added#

  • Add: Adds RPE to activity model (@jsamoocha, #355)

  • Add: support sport_type in client.update_activitiy() (@think-nice-things, #360)

Fixed#

  • Fix: Move to numpy style docstrings & add black (@lwasser, #365)

Deprecated#

  • The activity_type parameter in the client method update_activity() is deprecated and should be replaced by sport_type.

Contributors to this release#

@jsamoocha, @lwasser, @think-nice-things

v1.3.0rc0#

Added#

  • Adds Strava API changes, and datamodel-code-generator bug fix (@jsamoocha, #333)

  • Add: Replace full legacy model with extensions from the generated pydantic model (@jsamoocha, #324)

  • Add: Add support for lazy loading related entities (@jsamoocha, #322)

  • Add: Add support for nested model attributes(@jsamoocha, #316)

  • Add: replaces implementations for the classes Club, Gear, ActivityTotals, AthleteStats, and Athlete by the generated Pydantic model & backwards compatibility (@jsamoocha, #315)

  • Add: Workflow for updating strava model when the API changes (@jsamoocha, #302)

  • Add: pydantic_autodoc to sphinx build and reconfigure api structure - p1 (@lwasser, #326)

Fixed#

  • Fix: Corrects attribute lookup for enum values (@jsamoocha,#329)

Deprecated#

  • The BaseEntity methods deserialize(), from_dict(), and to_dict() are deprecated and will raise a DeprecationWarning when they’re used. They should be replaced by the pydantic methods parse_obj() and dict() or json().

Removed#

  • The complete attributes module

  • All the abstract entity types (e.g. IdentifiableEntity, LoadableEntity) from the model module

  • Constants used for activity types such as Activity.RIDE

  • HeartrateActivityZone, PowerActivityZone, PaceActivityZone as subtypes of BaseActivityZone (the latter is retained)

  • Everything related to segment leaderboards as this is not supported by Strava anymore

Contributors to this release#

@jsamoocha, @lwasser, @oliverkurth

v1.2.0#

Added#

  • Add: Upload photo to activity (@gitexel, #318)

  • Add: Support uploading activity_file object with type bytes (@gitexel, #308)

  • Add: Pre-commit hook + instructions and configure precommit.ci bot (@lwasser, #293)

Fixed#

  • Fix: Internal warnings should be ignored in tests (@jsamoocha, #319)

  • Fix: setuptools_scm bug when installing stravalib remotely via GitHub (@lwasser, #331)

  • Fix: fix LatLon unmarshal from string type (@oliverkurth, #334)

  • Fix: allows arithmetic and comparison between multiple quantities (@jsamoocha, #335)

Contributors to this release#

@oliverkurth, @gitexel, @jsamoocha, @lwasser

v1.1.0#

Added#

  • Add: Development & build/release guide to documentation, edit button to documentation theme, pr template for release (@lwasser, #289)

  • Add: Integration tests for /routes/{id} and /segments/starred (GET) (@jsamoocha, #250 (partial))

  • Add: Add integration tests for all POST/PUT client methods (@jsamoocha, #250 (partial))

  • Add: code cov to test suite (@lwasser, #262)

  • Add: add code of conduct to the repo, update contributing guide + readme badges (@lwasser, #269, #274)

  • Add: pull request templates for regular pr and release (@lwasser, #294)

  • Add: Support for python 3.11

Fixed#

  • Fix: Move docs to furo theme, add myst support for markdown, include CONTRIBUTING.md in documentation, enhance intro documentation page and add linkcheck to docs build (@lwasser, #276)

  • Fix: deprecated set-output command in actions build (@yihong0618, #272)

  • Fix: Add readthedocs config file to ensure build installs using pip (@lwasser, #270)

Changed#

  • Change: Replace units dependency by pint (@jsamoocha, #281)

Removed#

  • Remove: Support for python 3.7

Contributors to this release#

@lwasser, @yihong0618, @jsamoocha

v1.0.0#

Added#

  • Add: Add an option to mute Strava activity on update (@ollyajoke, #227)

  • Add Update make to build and serve docs and also run current tests (@lwasser,#263)

  • Add: Move package to build / setuptools_scm for version / remove setup.py and add CI push to pypi (@lwasser, #259)

Fixed#

  • Fix: add new attributes for bikes according to updates to Strava API to fix warning message (@huaminghuangtw, #239)

  • Fix: Minor bug in PyPI push and also streamlined action build (@lwasser, #265)

  • Fix: get_athlete w new attrs for shoes given strava updates to API (@lwasser, #220)

  • Fix: Refactor deprecated unittest aliases for Python 3.11 compatibility (@tirkarthi, #223)

  • Patch: Update readme and fix broken links in docs (@lwasser, #229)

Changed#

  • Change: Improved unknown time zone handling (@jsamoocha, #242)

  • Change: Refactor test suite and implement Ci for tests (@jsamoocha, #246)

  • Change: Remove support for python 2.x (@yihong0618, #254)

  • Change: Overhaul of documentation, fix links and CI build (@lwasser, #222)

Contributors to this release#

@jsamoocha, @yihong0618, @tirkarthi, @huaminghuangtw, @ollyajoke, @lwasser

0.10.4#

  • Fix to unicode regression (@hozn, #217)

0.10.3#

  • Fixes IndexErrors when deserializing empty lists as GPS locations (@hozn, #216)

  • Fix a few fields in Activity model (@hozn, #201, #214, #207)

  • deal with tzname without offset and timedelta in string format (@hozn, #195)

  • Update to docs and repr (@hozn, #200, #205, #206)

  • Now webhooks use the same domain as the rest of API. (@hozn, #204)

  • Setting rate_limit_requests=False in Client causes error (@hozn, #157)

0.10.2#

  • More fixes to new new authorization scopes (@hozn, #168)

  • Added an example oauth app and some small docs updates.

  • Changed missing-attribute warnings to be debug-level logs.

0.10.1#

  • Fixes of authorization_url / new scopes for new oauth (@hozn, #163, #165)

0.10.0#

  • Implementation of Strava’s new auth. (@hozn, #162, #163)

0.9.4#

  • Version bump for dup file upload to pypi. :-[

0.9.3#

  • Fix mutable parma defaults in rate-limiter util functions (@hozn, #155)

  • Add the missing subscription_permissions attr to Athlete (@hozn, #156)

0.9.2#

  • Fix for pip 0.10.0 (@paulte, #149, #150)

0.9.1#

  • Auto-configure the rate limits (not just usage) from response headers. (@hozn, #142)

0.9.0#

  • More API changes to reflect the big privacy changes from Strava. (@hozn, #139, #140)

  • Fix to kom_type attribute (@hozn, #138)

0.8.0#

  • Fixes to segment leaderboard models for Strava’s API BREAKING CHANGE (@hozn, #137) (See https://groups.google.com/forum/#!topic/strava-api/SsL2ytxtZng)

  • Return ObjectNotFound and AccessUnauthorized HTTPError subclasses for 404 and 401 errors respectively (@hozn, #134)

  • Return None when there are no activity streams (@hozn, #118)

0.7.0#

  • Updated Activity for new attributes (@hozn, #115, #122)

  • New segment attributes (@JohnnyLChang, #106)

  • Streams for a route (@drixselecta, #101)

  • Activity Uploader improvements (@bwalks, #119)

  • Added to_dict() method to model objects (@hozn, #127)

  • Added get_athlete_starred_segments (@wjazdbitu, #117)

  • Fixed glitches in activity.laps (@hozn, #112)

  • Fixed bug in club.members (@hozn, #110)

0.6.6#

  • Fix for delete_activity (@jonderwaater, #99)

0.6.5#

  • Updated ActivityPhoto model to support native photos and reverted get_activity_photos behavior for backwards compatibility (@hozn, #98)

  • Added missing Club attributes (MMI) (@hozn, #97)

0.6.4#

  • Added support for undocumented inclusion of laps in activity details. (@hozn, #96)

  • Added missing parameter for get_activity_photos (@hozn, #94)

  • Added missing activyt pr_count attribute (@Wilm0r, #95)

  • add “starred” property on SegmentExplorerResult (@mdarmetko, #92)

0.6.3#

  • Fixed update_activity to include description (@hozn, #91)

0.6.2#

  • More Python3 bugfixes

0.6.1#

  • Python3 bugfixes (@Tafkas, @martinogden)

  • Added delete_activity

  • added context_entries parameter to get_segment_leaderboard method (@jedman)

0.6.0#

  • Use (require) more modern pip/setuptools.

  • Full Python 3 support (using Six). (@hozn, #69)

  • Webhooks support (thanks to loisaidasam) (@hozn, #77)

  • explore_segments bugfix (@hozn, #71)

  • General updates to model/attribs (@hozn, #64, #73, etc.)

0.5.0#

  • Renamed Activity.photos property to full_photos due to new conflict with Strava API (@hozn, #45)

0.4.0#

  • Supporting new/removed attribs in Strava API (@hozn, #41, #42)

  • Added support for joining/leaving clubs (@hozn, #43)

  • Respect time zones in datetime objects being converted to epochs. (@hozn, #44)

0.3.0#

  • Activity streams data (Ghis)

  • Friends/followers model attributes (Ghis)

  • Support for photos (Ghis)

  • Updates for new Strava exposed API attributes (@hozn)

0.2.2#

  • Fixed the _resolve_url to not assume running on nix system.

0.2.1#

  • Changed Activity.gear to be a full entity attribute (Strava API changed)

0.2.0#

  • Added core functionality for Strava API v3.

  • Mostly redesigned codebase based on drastic changes in v3 API.

  • Dropped support for API v1, v2 and the “scrape” module.

0.1.0#

  • First proof-of-concept (very alpha) release.