Adds configurable state directory to client initialization#6
Merged
Conversation
Implements configurable state directory support in ReplicatedClient and AsyncReplicatedClient, allowing users to override platform-specific defaults. The StateManager now accepts an optional state_directory parameter and normalizes paths using expanduser() and resolve() to handle tilde expansion and relative paths correctly. This enables use cases like testing with temporary directories, containerized deployments with mounted volumes, multi-tenant applications, and development with project-local state while maintaining full backward compatibility with existing code. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Adds comprehensive test coverage for the state_directory parameter: - Absolute path handling and directory creation - Tilde expansion to home directory - Relative path resolution to absolute paths - Backward compatibility with default platform-specific directories Tests cover both sync and async client implementations to ensure consistent behavior across both APIs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Updates README.md with practical examples showing how to use custom state directories with absolute paths, tilde expansion, and relative paths. Adds API_REFERENCE.md documentation detailing the state_directory parameter, path handling behavior, and common use cases (testing, containers, multi-tenant apps, development environments). Clarifies that this feature is optional and defaults maintain backward compatibility with platform-specific directories. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
ec4e5a8 to
6281caf
Compare
Ensures test parity between sync and async clients by adding: - test_custom_state_directory_with_tilde for AsyncReplicatedClient - test_custom_state_directory_relative_path for AsyncReplicatedClient Both clients now have identical test coverage (4 custom state directory tests each), verifying path normalization works consistently across sync and async implementations.
marccampbell
approved these changes
Oct 13, 2025
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.
TL;DR
Enables custom state directory configuration through an optional parameter
Details
Adds an optional
state_directoryparameter to bothReplicatedClientandAsyncReplicatedClientto support scenarios where the OS-standard location is ephemeral. When omitted, the parameter defaults to None and the SDK uses existing platform-specific logic unchanged. When provided, the SDK normalizes the path by expanding tilde notation and resolving relative paths to absolute ones, ensuring consistent behavior across different path styles.This enhancement unblocks containerized deployments that need explicit volume mount points, enables proper test isolation without filesystem pollution, and supports multi-tenant architectures where state must remain separate between customers. The implementation maintains the SDK's silent failure philosophy for state operations, ensuring custom directories integrate seamlessly with existing error handling patterns.
🤖 Generated with Claude Code