Skip to content

Add progress race tracking API endpoint#28

Merged
knowlen merged 3 commits intodevfrom
feature/progress-race
Jul 22, 2025
Merged

Add progress race tracking API endpoint#28
knowlen merged 3 commits intodevfrom
feature/progress-race

Conversation

@knowlen
Copy link
Copy Markdown
Owner

@knowlen knowlen commented Jul 21, 2025

Summary

  • Implemented get_progress_race() method for world/realm first achievement race tracking
  • Increased API coverage from 88% to 90% (38/42 methods implemented)
  • Added comprehensive tests and documentation

Changes

  • Added GraphQL query for progressRace endpoint
  • Created ProgressRaceMixin following established architecture patterns
  • Added 5 unit tests, 8 integration tests, and 8 documentation tests
  • Created API reference documentation with examples
  • Updated changelog and project documentation

Test Plan

  • Unit tests pass
  • Integration tests pass
  • Documentation tests pass
  • Pre-commit hooks pass
  • Type checking passes with mypy

@claude
Copy link
Copy Markdown

claude bot commented Jul 21, 2025

Claude finished @knowlen's task —— View job


Code Review for Progress Race API Endpoint ✅

I've conducted a comprehensive review of this PR covering code quality, best practices, potential issues, performance, security, and test coverage.

Review Tasks

  • Review main implementation (ProgressRaceMixin)
  • Analyze generated client code and queries
  • Examine test coverage and quality
  • Review documentation completeness
  • Check for security and performance considerations
  • Verify adherence to established patterns
  • Provide final recommendations

Overall Assessment: EXCELLENT

This PR demonstrates exceptional code quality and follows all established patterns. The implementation is production-ready.


🔍 Detailed Review

Architecture & Design ⭐⭐⭐⭐⭐

  • Perfect mixin pattern: ProgressRaceMixin follows the exact same architecture as other mixins
  • Consistent method registration: Uses create_complex_method factory pattern correctly
  • Clean separation: Protocol definitions properly separate interface from implementation
  • Parameter mapping: Snake_case to camelCase conversion follows project conventions

Generated Code Quality ⭐⭐⭐⭐⭐

  • Pydantic models: Proper field aliasing (progressRaceDataprogress_race_data)
  • Flexible typing: Optional[Any] for progress_race correctly handles dynamic JSON responses
  • GraphQL integration: Query parameters and variables properly mapped
  • Type safety: All generated code includes proper type annotations

Test Coverage ⭐⭐⭐⭐⭐

Outstanding test coverage with 21 total tests across 3 categories:

Unit Tests (5 tests):

  • Method existence verification
  • Parameter validation and mapping
  • Response structure validation
  • Edge cases (minimal params, guild filters, competition filters)

Integration Tests (8 tests):

  • Real API calls with various parameter combinations
  • Server filter testing
  • Invalid input handling (graceful degradation)
  • Response format flexibility testing

Documentation Tests (8 tests):

  • All code examples from documentation are tested
  • Error handling scenarios validated
  • Multiple usage patterns verified
  • JSON serialization compatibility confirmed

Documentation ⭐⭐⭐⭐⭐

Comprehensive and well-structured documentation:

  • Clear API overview with feature table
  • Complete parameter documentation with types and descriptions
  • Multiple practical usage examples
  • Best practices and rate limiting guidance
  • Proper warning about API availability during races
  • Error handling examples

Security & Performance ⭐⭐⭐⭐⭐

No security or performance concerns identified:

  • Input validation: Relies on GraphQL schema validation (consistent with other endpoints)
  • No injection risks: All parameters properly typed and validated
  • Performance optimized: Uses 1 rate limit point (lightweight)
  • Efficient caching: Documentation includes caching recommendations
  • Error handling: Graceful handling of null responses and invalid inputs

Code Standards ⭐⭐⭐⭐⭐

  • Type safety: Full type annotations throughout
  • Docstring quality: Clear, comprehensive documentation
  • Naming conventions: Consistent with project standards
  • File organization: Follows established project structure

🎯 Key Strengths

  1. Perfect Pattern Adherence: Follows the exact same architectural patterns as existing mixins
  2. Comprehensive Testing: 21 tests covering all scenarios including edge cases
  3. Flexible Response Handling: Correctly handles dynamic JSON responses with Optional[Any]
  4. Production-Ready Documentation: Complete with examples, best practices, and warnings
  5. Graceful Error Handling: Handles null responses and invalid inputs appropriately
  6. Type Safety: Full type annotations and Pydantic validation

🔧 Minor Observations (Not issues, just notes)

  1. Dynamic JSON Response: The Optional[Any] typing for progress_race is appropriate given the dynamic nature of race data
  2. API Availability: Documentation correctly warns about data only being available during active races
  3. Rate Limiting: Properly documented as lightweight (1 point per query)

Final Recommendation: APPROVE

This PR is exceptionally well-implemented and ready for production. It:

  • ✅ Follows all established patterns perfectly
  • ✅ Has comprehensive test coverage (90% API coverage achieved)
  • ✅ Includes excellent documentation
  • ✅ Has no security or performance concerns
  • ✅ Handles edge cases gracefully
  • ✅ Maintains type safety throughout

The implementation demonstrates a deep understanding of the codebase architecture and contributes meaningfully to the API coverage goal.


@knowlen knowlen merged commit a48709b into dev Jul 22, 2025
9 checks passed
@knowlen knowlen deleted the feature/progress-race branch July 22, 2025 00:43
knowlen added a commit that referenced this pull request Aug 4, 2025
* Refactor client.py to reduce file size by 95% (#24)

* Reorganize generated code into _generated subdirectory

* Fix remaining test imports for ValidationError and generated modules

* Suppress websockets deprecation warnings from generated code

* Refactor client.py using factory patterns and mixins

* Fix test failures in refactored client

* Fix remaining test failures and add UNSET export for backward compatibility

* Update documentation to reflect client refactoring

* Fix type annotations and pre-commit issues

* Remove client_save.py backup file

* Fix all mypy type errors for pre-commit compliance

* Fix kwargs passthrough issue in report methods

Remove kwargs passthrough to execute() to prevent HTTP client errors.
Update convenience methods to only pass expected parameters.
Update test to match new behavior where kwargs are not passed through.

* Add dev branch to CI/CD workflow triggers

* Trigger Claude Code Review [review]

* Remove Claude review trigger file

* Allow manual triggering of Claude Code Review workflow

* Fix Claude review workflow to support reopened PRs [review]

Add 'reopened' to PR event types and condition check

* Address high-priority reviewer feedback

- Add Protocol for type safety with model_validate method
- Cache regex patterns for performance improvement
- Improve error messages to show available parameters
- Add comprehensive documentation for method registration
- Fix type annotations to satisfy mypy

* Update documentation for refactored architecture

- Fix markdown formatting in architecture.md for proper rendering
- Update test counts from 278 to 310 tests (105 unit tests)
- Update project structure to reflect new modular architecture
- Add method_factory.py and param_builders.py to unit test docs
- Document new mixins directory structure

* fix formatting

* Bump version to 0.2.0a3

Update version across all project files:
- pyproject.toml
- esologs/__init__.py
- README.md
- CLAUDE.md
- docs/index.md
- docs/changelog.md (with release notes)
- docs/development/architecture.md

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* feat: Implement comprehensive guild data API endpoints (5 methods) (#27)

* Implement guild data endpoints

- Add 4 new guild methods: get_guilds(), get_guild(), get_guild_attendance(), get_guild_members()
- Create GraphQL queries for guild search, lookup, attendance, and members
- Add parameter builder for guild attendance with proper defaults
- Implement flexible get_guild() method supporting ID or name/server lookup
- Add comprehensive unit tests (12 new tests)
- Add integration tests (10 new tests)
- Update guild-data.md documentation with examples for all new methods
- Update API coverage from ~83% to ~90% (37/41 methods)

* Fix unit test mocking for httpx.Response objects

* Fix UNSET import in test_character_rankings.py

* Address reviewer comments: fix self type annotation and import location

* Fix guild documentation examples and add comprehensive tests

* Convert relative imports to absolute imports for better maintainability

* Add retry logic and resilience features for integration tests and API clients

* Replace pilcrow (¶) with hash (#) for anchor links in documentation

* Fix pytest configuration for retry logic in integration and docs tests

* Update README files to reflect current project status and guild endpoints

* Fix API coverage metrics: guild endpoints provide ~88% coverage (37/42 methods)

* Address reviewer feedback: fix import consistency and document validation strategy

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Add progress race tracking API endpoint (#28)

* Add progress race tracking API endpoint with 90% coverage

* Fix progress race tests to handle 'No race supported' GraphQL errors

* Update README files to reflect current project status with 90% API coverage

* Add OAuth2 user authentication and UserData API methods (#29)

* Add OAuth2 user authentication and UserData API methods

* Fix type checking and linting issues

* Add missing test dependencies (responses, pytest-xdist)

* Add mkdocs to dev dependencies for complete test coverage

* Fix test dependencies and user auth warnings

- Add mkdocs-material and mkdocs-minify-plugin to dev dependencies
- Fix user authentication warnings in test_user_data.py by using user_token parameter
- Ensure all documentation build dependencies are available for tests

* Consolidate docs dependencies in dev extras

* fix precommit checks

* Implement async OAuth2 support and address PR review concerns

* Remove duplicate API status JavaScript files

* Remove redundant scripts and add token files to gitignore

* Remove redundant optimize_images_simple.py script

* Add README.md documentation for scripts directory

* Add README.md documentation for examples directory

* Update README with output examples and current project state

* Update README: remove NEW tags, normalize output formatting, add missing directories to project structure

* Fix pre-commit checks: remove trailing whitespace and update formatting

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Fix API status checker false positives by using correct favicon URL (#30)

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Remove API status checker and improve documentation (#31)

* Remove unreliable API status checker and add troubleshooting guide

* Move troubleshooting to Getting Started section

* Reorganize documentation structure for better navigation

* Fix markdown formatting in authentication guide

* Fix list formatting in authentication guide

* Fix changelog - mark 0.2.0a3 as unreleased and correct dates

* Address PR review comments - add OAuth2 error handling and fix Twitter handle

* fix dates

* Remove non-existent status.esologs.com references and fix future dates

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Prepare v0.2.0b1 beta release

* Add release branch verification workflow

* Update README

* moved to docs

* Fix API method signatures in README to match implementation

* Add return type information to API method documentation

* Replace return type sub-bullets with documentation links

* test formatting

* Update API method documentation to use method names as links

* Refine API docs: only method names are links, parameters are separate code snippets

* Simplify API method list by removing parameters

* clean up

* formatting

* formatting

* formatting

* formatting

* formatting

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>
knowlen added a commit that referenced this pull request Aug 7, 2025
* Release v0.2.0b1 - First Beta Release (#32)

* Refactor client.py to reduce file size by 95% (#24)

* Reorganize generated code into _generated subdirectory

* Fix remaining test imports for ValidationError and generated modules

* Suppress websockets deprecation warnings from generated code

* Refactor client.py using factory patterns and mixins

* Fix test failures in refactored client

* Fix remaining test failures and add UNSET export for backward compatibility

* Update documentation to reflect client refactoring

* Fix type annotations and pre-commit issues

* Remove client_save.py backup file

* Fix all mypy type errors for pre-commit compliance

* Fix kwargs passthrough issue in report methods

Remove kwargs passthrough to execute() to prevent HTTP client errors.
Update convenience methods to only pass expected parameters.
Update test to match new behavior where kwargs are not passed through.

* Add dev branch to CI/CD workflow triggers

* Trigger Claude Code Review [review]

* Remove Claude review trigger file

* Allow manual triggering of Claude Code Review workflow

* Fix Claude review workflow to support reopened PRs [review]

Add 'reopened' to PR event types and condition check

* Address high-priority reviewer feedback

- Add Protocol for type safety with model_validate method
- Cache regex patterns for performance improvement
- Improve error messages to show available parameters
- Add comprehensive documentation for method registration
- Fix type annotations to satisfy mypy

* Update documentation for refactored architecture

- Fix markdown formatting in architecture.md for proper rendering
- Update test counts from 278 to 310 tests (105 unit tests)
- Update project structure to reflect new modular architecture
- Add method_factory.py and param_builders.py to unit test docs
- Document new mixins directory structure

* fix formatting

* Bump version to 0.2.0a3

Update version across all project files:
- pyproject.toml
- esologs/__init__.py
- README.md
- CLAUDE.md
- docs/index.md
- docs/changelog.md (with release notes)
- docs/development/architecture.md

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* feat: Implement comprehensive guild data API endpoints (5 methods) (#27)

* Implement guild data endpoints

- Add 4 new guild methods: get_guilds(), get_guild(), get_guild_attendance(), get_guild_members()
- Create GraphQL queries for guild search, lookup, attendance, and members
- Add parameter builder for guild attendance with proper defaults
- Implement flexible get_guild() method supporting ID or name/server lookup
- Add comprehensive unit tests (12 new tests)
- Add integration tests (10 new tests)
- Update guild-data.md documentation with examples for all new methods
- Update API coverage from ~83% to ~90% (37/41 methods)

* Fix unit test mocking for httpx.Response objects

* Fix UNSET import in test_character_rankings.py

* Address reviewer comments: fix self type annotation and import location

* Fix guild documentation examples and add comprehensive tests

* Convert relative imports to absolute imports for better maintainability

* Add retry logic and resilience features for integration tests and API clients

* Replace pilcrow (¶) with hash (#) for anchor links in documentation

* Fix pytest configuration for retry logic in integration and docs tests

* Update README files to reflect current project status and guild endpoints

* Fix API coverage metrics: guild endpoints provide ~88% coverage (37/42 methods)

* Address reviewer feedback: fix import consistency and document validation strategy

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Add progress race tracking API endpoint (#28)

* Add progress race tracking API endpoint with 90% coverage

* Fix progress race tests to handle 'No race supported' GraphQL errors

* Update README files to reflect current project status with 90% API coverage

* Add OAuth2 user authentication and UserData API methods (#29)

* Add OAuth2 user authentication and UserData API methods

* Fix type checking and linting issues

* Add missing test dependencies (responses, pytest-xdist)

* Add mkdocs to dev dependencies for complete test coverage

* Fix test dependencies and user auth warnings

- Add mkdocs-material and mkdocs-minify-plugin to dev dependencies
- Fix user authentication warnings in test_user_data.py by using user_token parameter
- Ensure all documentation build dependencies are available for tests

* Consolidate docs dependencies in dev extras

* fix precommit checks

* Implement async OAuth2 support and address PR review concerns

* Remove duplicate API status JavaScript files

* Remove redundant scripts and add token files to gitignore

* Remove redundant optimize_images_simple.py script

* Add README.md documentation for scripts directory

* Add README.md documentation for examples directory

* Update README with output examples and current project state

* Update README: remove NEW tags, normalize output formatting, add missing directories to project structure

* Fix pre-commit checks: remove trailing whitespace and update formatting

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Fix API status checker false positives by using correct favicon URL (#30)

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Remove API status checker and improve documentation (#31)

* Remove unreliable API status checker and add troubleshooting guide

* Move troubleshooting to Getting Started section

* Reorganize documentation structure for better navigation

* Fix markdown formatting in authentication guide

* Fix list formatting in authentication guide

* Fix changelog - mark 0.2.0a3 as unreleased and correct dates

* Address PR review comments - add OAuth2 error handling and fix Twitter handle

* fix dates

* Remove non-existent status.esologs.com references and fix future dates

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Prepare v0.2.0b1 beta release

* Add release branch verification workflow

* Update README

* moved to docs

* Fix API method signatures in README to match implementation

* Add return type information to API method documentation

* Replace return type sub-bullets with documentation links

* test formatting

* Update API method documentation to use method names as links

* Refine API docs: only method names are links, parameters are separate code snippets

* Simplify API method list by removing parameters

* clean up

* formatting

* formatting

* formatting

* formatting

* formatting

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* fix

* fix

* fix

* fix

* Fix test count inconsistencies across documentation (#44)

* Fix test count inconsistencies - update to 428 tests

* Fix Test Pyramid Structure diagram with correct test counts

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Update documentation for v0.2.0b1 beta release (#45)

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Fix enum documentation accuracy and improve Advanced Usage formatting (#46)

* docs: add Enums reference and Advanced Usage guide with filter expressions

* fix: ensure proper list rendering in enums documentation

* fix: correct relative links in enums documentation

* Fix enum documentation links and add enum hyperlinks to parameter tables

- Fixed broken links in enums.md that pointed to report-data instead of report-analysis
- Added hyperlinks to enum types in character-data.md parameter tables
- Added hyperlinks to enum types in report-analysis.md parameter tables
- All enum references in API documentation now link to their definitions

* Fix enum documentation accuracy and improve Advanced Usage formatting

* Add Serena MCP cache files to .gitignore

* Remove Serena cache files from version control

* delete testfiles

* Remove all Serena files from version control and ignore entire .serena directory

* Fix enum documentation to match actual implementation values

* Clarify why some enums aren't exposed - they're used by Zone.characterRankings which isn't a top-level API method

* Add documentation for direct GraphQL access and explain nested field limitations

* Fix incorrect GraphQL field reference: Zone.characterRankings → Encounter.characterRankings

* remove this

* Move Direct GraphQL Access to Getting Started section and remove Advanced Topics

* simplify

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

* Fix broken documentation links in README (#49)

authored-by: knowlen <knowlen@users.noreply.github.com>

* Create claude-dispatch.yml (#50)

* Create claude-dispatch.yml

* Fix trailing whitespace in workflow file

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant