Skip to content

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

Merged
knowlen merged 20 commits intodevfrom
feature/organize-generated-code
Jul 19, 2025
Merged

Refactor client.py to reduce file size by 95%#24
knowlen merged 20 commits intodevfrom
feature/organize-generated-code

Conversation

@knowlen
Copy link
Copy Markdown
Owner

@knowlen knowlen commented Jul 19, 2025

Summary

  • Refactored client.py from 1,610 lines to 86 lines (95% reduction)
  • Implemented factory pattern with mixins for better code organization
  • Maintained 100% backward compatibility - all tests pass

Changes

  1. Extracted method factory functions (method_factory.py - 349 lines)

    • create_simple_getter for ID-based queries
    • create_no_params_getter for parameterless queries
    • create_paginated_getter for paginated queries
    • create_complex_method for methods with many parameters
    • create_method_with_builder for methods using parameter builders
  2. Created parameter builders (param_builders.py - 330 lines)

    • Centralized parameter validation and transformation
    • Support for camelCase to snake_case conversion
    • Proper handling of UNSET values
  3. Implemented mixin architecture (mixins/ - 5 files)

    • GameDataMixin - abilities, items, classes, NPCs, etc.
    • CharacterMixin - character data and rankings
    • WorldDataMixin - zones, regions, encounters
    • GuildMixin - guild information
    • ReportMixin - report search and analysis
  4. Centralized GraphQL queries (queries.py - 770 lines)

    • All queries in one place for easier maintenance
    • Consistent formatting and organization

Technical Details

  • Uses __init_subclass__ hook for automatic method registration
  • Dynamic method creation with proper type hints
  • Maintains all original method signatures and behavior
  • Fixed kwargs passthrough issue to prevent HTTP client errors

Testing

  • All 105 unit tests passing
  • All pre-commit hooks passing (Black, isort, ruff, mypy)
  • 93% code coverage maintained
  • Integration tests require environment variables (not run in CI)

Backward Compatibility

  • All original methods preserved with identical signatures
  • UNSET export maintained for external usage
  • No breaking changes to public API

Performance

  • Improved import time with lazy method creation
  • Better code organization for maintenance
  • Reduced memory footprint with shared factory functions

@knowlen knowlen changed the base branch from v2-dev to dev July 19, 2025 19:35
@knowlen knowlen closed this Jul 19, 2025
@knowlen knowlen reopened this Jul 19, 2025
Add 'reopened' to PR event types and condition check
@knowlen knowlen closed this Jul 19, 2025
@knowlen knowlen reopened this Jul 19, 2025
@claude
Copy link
Copy Markdown

claude bot commented Jul 19, 2025

Claude finished @knowlen's task —— View job


PR Code Review

This is an impressive refactoring that successfully reduces client.py from 1,610 lines to 86 lines (95% reduction) while maintaining backward compatibility. The new architecture using factory patterns and mixins is well-designed and maintainable.

Review Tasks:

  • Review main client.py refactoring and architecture changes
  • Analyze method factory implementation (method_factory.py)
  • Examine parameter builders and validation (param_builders.py)
  • Review mixin architecture and organization
  • Check backward compatibility preservation
  • Assess test coverage for new functionality
  • Look for potential bugs, security issues, and performance concerns
  • Provide comprehensive feedback and recommendations

Strengths

1. Excellent Architecture Design

  • Factory Pattern Implementation: The method factories in method_factory.py are well-designed with clear separation of concerns for different method types (simple getters, paginated, complex)
  • Mixin Organization: Logical grouping by functional area (GameDataMixin, CharacterMixin, etc.) makes the codebase much more navigable
  • Dynamic Method Registration: The __init_subclass__ hook for automatic method registration is elegant and maintainable

2. Strong Backward Compatibility

  • All original method signatures preserved
  • UNSET export maintained for external usage
  • Existing tests pass without modification, confirming API compatibility
  • Parameter handling supports both positional and keyword arguments

3. Code Quality Improvements

  • DRY Principle: Eliminates massive code duplication from the original 1,610-line file
  • Type Safety: Maintains full type hints throughout the refactored code
  • Documentation: Good docstrings and clear method naming conventions
  • Separation of Concerns: Each component has a single, well-defined responsibility

4. Comprehensive Testing

  • New test files for method_factory.py and param_builders.py provide good coverage
  • Existing integration tests validate backward compatibility
  • Parameter validation and builder functions have dedicated test coverage

⚠️ Areas for Improvement

1. Type Safety Issues (method_factory.py:67, 106, 164, 226, 268)

return cast(T, return_type.model_validate(data))  # type: ignore[attr-defined]

The # type: ignore[attr-defined] comments suggest type checking issues. Consider:

  • Adding proper type bounds for T to ensure it has model_validate
  • Using protocol classes or generic constraints

2. Parameter Validation Concerns (method_factory.py:43-58)

async def method(self: Any, id: Optional[int] = None, **kwargs: Any) -> T:
    if id is None:
        # Complex fallback logic for finding id parameter

Issues:

  • The parameter resolution logic is complex and could be error-prone
  • Multiple fallback attempts might mask programming errors
  • **kwargs swallows all parameters, reducing type safety

Recommendation: Use explicit parameter lists where possible.

3. Error Handling (method_factory.py:58)

raise TypeError(f"{snake_name}() missing required parameter: id")

Error messages could be more helpful by showing available parameters.

4. Security Considerations (param_builders.py)

  • The parameter builders use **kwargs extensively which could allow injection of unexpected parameters
  • Consider validating that only expected parameters are present

5. Performance Considerations

  • Dynamic method creation happens at import time, which is good
  • Regular expression compilation in factory methods could be cached:
# method_factory.py:41, 110, 168, 230, 272
snake_name = re.sub("([a-z0-9])([A-Z])", r"\1_\2", operation_name).lower()

6. Documentation Gaps

  • Complex parameter builders could benefit from more detailed examples
  • The relationship between GraphQL query names and Python method names isn't immediately clear

🐛 Potential Issues

1. Method Signature Loss (method_factory.py:235)

# This is a simplified version - in production, we'd want to preserve
# the full signature with proper type hints

This comment indicates that complex methods lose their proper signatures, which affects:

  • IDE autocompletion
  • Type checking accuracy
  • Developer experience

2. Kwargs Pollution (Multiple files)

The extensive use of **kwargs throughout the system means:

  • Invalid parameters might be silently ignored
  • Typos in parameter names won't be caught
  • Type checking is reduced

🔒 Security Assessment

Good security practices observed:

  • Input validation with UNSET handling
  • No direct SQL injection vectors (GraphQL-based)
  • Proper parameter sanitization in builders

⚠️ Minor concerns:

  • Parameter validation could be stricter
  • **kwargs usage allows unexpected parameters

📈 Performance Assessment

Positive impacts:

  • Reduced import time due to smaller client.py
  • Shared factory functions reduce memory footprint
  • Lazy method creation is efficient

➡️ Neutral/potential improvements:

  • Regular expression compilation could be cached
  • Parameter validation overhead is minimal but present

🧪 Test Coverage Assessment

Excellent coverage:

  • 330 lines of tests for method_factory.py
  • 403 lines of tests for param_builders.py
  • Existing integration tests validate compatibility
  • All reported tests (105 unit tests) passing

Recommendations

High Priority:

  1. Fix Type Safety: Resolve the type checking issues in factory methods
  2. Improve Error Messages: Make parameter validation errors more helpful
  3. Document Method Registration: Clarify how GraphQL operations map to Python methods

Medium Priority:

  1. Performance Optimization: Cache compiled regex patterns
  2. Parameter Validation: Consider stricter validation for unknown parameters
  3. Method Signatures: Preserve full type hints for complex methods where possible

Low Priority:

  1. Code Comments: Add more inline documentation for complex factory logic
  2. Examples: Include more usage examples in docstrings

Overall Assessment

This is an excellent refactoring that significantly improves code maintainability while preserving full backward compatibility. The factory pattern and mixin architecture are well-implemented and the test coverage is comprehensive. The few issues identified are minor and don't detract from the overall quality of the work.

Recommendation: ✅ APPROVE - This PR successfully achieves its goals with minimal risk and substantial benefits.

@knowlen
Copy link
Copy Markdown
Owner Author

knowlen commented Jul 19, 2025

Thank you for the thorough review @claude! I'll address the high priority issues:

High Priority Fixes

1. Type Safety

I'll fix the type checking issues by:

  • Adding proper type constraints for the generic T
  • Creating a Protocol for types with model_validate method
  • Removing the type: ignore comments

2. Error Messages

I'll improve error messages to show:

  • Available parameter names when one is missing
  • Expected parameter types
  • More context about what went wrong

3. Method Registration Documentation

I'll add clear documentation explaining:

  • How GraphQL operation names map to Python method names
  • The naming conventions used (camelCase → snake_case)
  • Examples of the transformation

I'll also cache the regex patterns for performance as suggested in the medium priority items.

Working on these fixes now...

- 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
@knowlen
Copy link
Copy Markdown
Owner Author

knowlen commented Jul 19, 2025

Review Feedback Addressed ✅

I've implemented all high-priority fixes suggested by @claude:

1. Type Safety (Fixed)

  • Created a ModelWithValidate Protocol for proper type constraints
  • Removed all # type: ignore comments
  • Added proper type bounds for generic T
  • All mypy checks now pass

2. Error Messages (Improved)

  • Error messages now show available parameters when one is missing
  • Include parameter types in error messages for complex methods
  • Example: get_report_events() missing required parameter 'report_id' (type: int). Available: code, start_time

3. Method Registration Documentation (Added)

  • Comprehensive documentation explaining GraphQL → Python naming conventions
  • Examples of how methods are registered through mixins
  • Clear mapping of operation names to Python methods

4. Performance (Optimized)

  • Cached regex pattern for camelCase → snake_case conversion
  • Compile once, use many times approach

All unit tests passing (105/105) ✅
All pre-commit hooks passing ✅

The medium and low priority items can be addressed in follow-up PRs if needed.

@claude
Copy link
Copy Markdown

claude bot commented Jul 19, 2025

Claude finished @knowlen's task —— View job


✅ High-Priority Fixes Successfully Verified

Excellent work! I've thoroughly reviewed the updated code and can confirm all high-priority fixes have been properly implemented:

Todo List:

  • Type Safety Fixes Verified - ModelWithValidate Protocol created, proper type bounds added, all # type: ignore comments removed
  • Error Message Improvements Verified - Now shows available parameters and parameter types in error messages
  • Method Registration Documentation Verified - Comprehensive documentation added explaining GraphQL → Python naming conventions
  • Regex Pattern Caching Verified - Performance optimization implemented with compiled pattern
  • Provide updated feedback on fixes

🎯 Verification Results

1. Type SafetyFULLY ADDRESSED

method_factory.py:44-53:

  • Created proper ModelWithValidate Protocol
  • Added correct type bound: T = TypeVar("T", bound=ModelWithValidate)
  • Removed all # type: ignore comments throughout the file
  • Clean type-safe cast(T, return_type.model_validate(data)) calls

2. Error MessagesSIGNIFICANTLY IMPROVED

method_factory.py:100-109, 263-269:

  • Simple getters now show available parameters: "Expected one of: 'id', 'guildId', or 'guild_id' (available: code, start_time)"
  • Complex methods show parameter types: "missing required parameter 'report_id' (type: int). Available: code, start_time"
  • Much more helpful debugging experience for developers

3. DocumentationCOMPREHENSIVE

method_factory.py:7-35:

  • Detailed explanation of GraphQL → Python naming conventions
  • Clear examples: getAbilityget_ability()
  • Method registration process documented
  • Operation mapping configurations explained

4. PerformanceOPTIMIZED

method_factory.py:56:

  • Regex pattern cached: _CAMEL_TO_SNAKE_PATTERN = re.compile(r"([a-z0-9])([A-Z])")
  • Single compilation, multiple uses throughout the module

5. Test CoverageEXCELLENT

test_method_factory.py:251:

  • Error message improvements are properly tested
  • Comprehensive test coverage for all factory functions
  • Verifies both success and error scenarios

🏆 Overall Assessment

The follow-up implementation is exemplary. All suggested improvements have been implemented with attention to detail:

  • Type safety issues completely resolved with proper protocols
  • Error messages are now developer-friendly with contextual information
  • Documentation is comprehensive and clear for future maintainers
  • Performance optimized with regex caching
  • Well-tested with appropriate error scenario coverage

The code quality has been significantly elevated while maintaining the excellent architectural foundation. This represents a mature, production-ready implementation.

Status: ✅ All High-Priority Issues Successfully Resolved


knowlen added 3 commits July 19, 2025 15:34
- 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
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
@knowlen knowlen merged commit 6eff6d3 into dev Jul 19, 2025
9 checks passed
@knowlen knowlen deleted the feature/organize-generated-code branch July 19, 2025 22:53
knowlen added a commit that referenced this pull request Jul 21, 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>

* 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

---------

Co-authored-by: knowlen <knowlen@users.noreply.github.com>
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