Skip to content

Conversation

crdant
Copy link
Member

@crdant crdant commented Oct 13, 2025

TL;DR

Enables custom state directory configuration through an optional parameter

Details

Adds an optional state_directory parameter to both ReplicatedClient and AsyncReplicatedClient to 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

crdant and others added 3 commits October 13, 2025 11:18
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
@crdant crdant force-pushed the feature/crdant/varies-state-directory branch from ec4e5a8 to 6281caf Compare October 13, 2025 15:19
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.
@crdant crdant merged commit d5466ff into main Oct 13, 2025
5 checks passed
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.

2 participants