Conversation
- Refactor OuraClient._make_request to handle URL construction centrally - Add logic to ensure endpoints start with / and remove duplicate /v2 prefixes - Update all endpoint modules to use relative paths without /v2 prefix - Update all tests to match new URL construction pattern - All 101 tests passing This fixes issue #8 where URLs were constructed as: https://api.ouraring.com/v2/v2/usercollection/... Now they correctly resolve to: https://api.ouraring.com/v2/usercollection/... 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Create build_query_params utility function in oura_api_client/utils - Handles date conversion from date objects to ISO strings - Filters out None values automatically - Refactor all endpoint modules to use the new utility - Reduces code duplication across 16 endpoint files - All 101 tests passing This centralizes the common pattern: - Converting date objects to ISO format strings - Building params dict with start_date, end_date, next_token - Filtering out None values Closes #9 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Fix undefined variable in ring_configuration.py - Remove unused List import from webhook.py - Add newline at end of query_params.py
- Migrate heartrate.py and personal.py from dataclasses to Pydantic BaseModel - Fix critical formatting issues in daily_sleep.py with proper indentation - Make sleep.py self-contained by defining its own contributor models - Remove cross-file imports that created tight coupling between models - Update test imports to use correct model types for each endpoint - Maintain backward compatibility with from_dict() methods - All 101 tests passing, flake8 clean This standardizes all 20 model files to use Pydantic BaseModel consistently, improving code maintainability and reducing coupling between modules. Closes #10 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes Made
1. Standardized on Pydantic BaseModel
heartrate.pyandpersonal.pyfrom dataclasses to Pydanticfrom_dict()class methods2. Fixed Critical Code Quality Issues
daily_sleep.pywith proper formatting (was nearly unreadable)3. Removed Cross-File Dependencies
sleep.pyself-contained by defining its own contributor models4. Updated Test Suite
5. Code Quality Improvements
Benefits
Test plan
python -m pytest tests/test_client.pyflake8 oura_api_client/(all issues fixed)Closes #10
🤖 Generated with Claude Code