rpr-cli 0.3.8__tar.gz → 0.3.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/PKG-INFO +19 -4
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/README.md +18 -3
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/Cargo.lock +1 -1
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/Cargo.toml +1 -1
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/rename.rs +115 -17
- rpr_cli-0.3.10/src/rpr/__init__.py +1 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/cli.py +8 -0
- rpr_cli-0.3.10/src/rpr/commands/rename.py +452 -0
- rpr_cli-0.3.10/src/rpr/commands/version.py +198 -0
- rpr_cli-0.3.8/src/rpr/__init__.py +0 -1
- rpr_cli-0.3.8/src/rpr/commands/rename.py +0 -104
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/LICENSE +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/pyproject.toml +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/config/container.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/config/mod.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/config/settings.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/graph.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/lib.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/dtos/mod.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/entities/mod.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/entities/users.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/models/mod.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/parse.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/repos/base.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/repos/mod.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/repos/users.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/resolve.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/rpr-parser/src/walker.rs +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/_native.pyi +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/approval.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/bootstrap.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/client.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/control.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/mock.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/runtime.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/session.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/base.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/mutating.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/readonly.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/agent/tools/registry.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/catalog.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/chat_service.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/checks.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/cli_adapter.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/completer.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/conversation_service.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/prompt_service.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/selector.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/application/shell.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/base.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/instructions.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/packages.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/checks/workspace.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/add.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/chat.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/check.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/api.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/domain.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/engine.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/storybook.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/generate/ui.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/init.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/map.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/refresh.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/settings.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/sync.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/commands/update.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/context.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/dependencies.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/dependency_manifest_data.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/base.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/claude.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/codex.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/copilot.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/cursor.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/gemini.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/generators/github.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/manifest_refresh.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/architecture.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/chains.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/classifier.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/coverage.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/dependencies.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/extractor.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/graph.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/output.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/responsibility.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/topology.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/map/walker.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/package_updates.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/project_rename.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/base_entity.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/base_repo.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/container.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/domain/settings.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/all.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/api.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/domain.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/frontend.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/rust-engine.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/setup-guide.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/tooling-setup.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/instructions/tooling.instructions.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/BACKEND_FLOW.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/README.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/content.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/httpChatStreamClient.spec.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/httpChatStreamClient.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/client/types.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/ChatComposer.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/ChatComposer.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/__screenshots__/ChatComposer.spec.tsx/ChatComposer-renders-custom-action-buttons-beside-the-attachment-control-1.png +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/fileDrop.spec.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/fileDrop.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/ChatComposerMentionTokens.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/ChatSuggestionsPopover.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/LocalFileSuggestionAction.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/localFileSuggestions.spec.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/localFileSuggestions.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/triggerDetection.spec.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/triggerDetection.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/types.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/suggestions/useChatSuggestions.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/types.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/useChatComposer.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/useChatStream.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/composer/useChatStream.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperience.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperience.styles.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperience.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceComposer.styles.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceComposer.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceHeader.styles.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ChatExperienceHeader.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ThreadHistory.styles.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/ThreadHistory.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/chatStorage.spec.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/chatStorage.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/types.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/useChatExperience.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/experience/useChatExperience.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/testing/createMockChatStreamClient.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/testing/createMockSuggestionProvider.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/testing/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessage.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessageActions.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessageContent.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatMessageContent.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatThread.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/ChatThread.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/README.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/contentFormat.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/streaming.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/thread/types.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponent.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponent.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponentList.spec.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/VirtualComponentList.tsx +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/chat/virtual-list/index.ts +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/fetch.service.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/sticky-navigation.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/sticky-navigation.spec.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/js_special_files/vitest-browser-config.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/api/routes/chat_routes.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/api/tests/test_chat.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/models/dtos/chat_dtos.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/models/dtos/conversation_history_dtos.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/models/entities/conversation_history.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/repos/conversation_history.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/agent_session_codec.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/chat_service.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/conversation_history_service.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/conversation_operations.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/history_codec.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/in_memory_history_store.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/postgres_history_store.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/protocols/conversation_history_store.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/protocols/conversation_runtime.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/services/protocols/llm_provider.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_chat_dtos.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_chat_service.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_history_codec.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_history_projection.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_persistence_config.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/chat/domain/tests/test_postgres_history_store.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/models/dtos/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/models/dtos/vllm_model_dtos.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/VLLM_SETUP.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/model_catalog.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/vllm_agent_factory.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/vllm_agent_factory_protocol.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/agents/vllm_inference_coordinator.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/runtimes/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/runtimes/agents_sdk.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/services/runtimes/agents_sdk_message_mapping.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/tests/test_agents_sdk_runtime.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/tests/test_vllm_model_catalog.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/py_special_files/vllm_provider/domain/tests/test_vllm_provider.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/camel_case_model.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/domain_container.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/domain_settings.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/dto_util.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/encrypted_column.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/logging.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/mapper_util.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/partial_update.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/scaffolds/special_files/test_encrypted_column.md +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/templates/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/templates/registry.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/__init__.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/console.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/markdown.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/prompt_session.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/renderers.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/ui/theme.py +0 -0
- {rpr_cli-0.3.8 → rpr_cli-0.3.10}/src/rpr/workspace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rpr-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.10
|
|
4
4
|
Requires-Dist: typer>=0.24.1
|
|
5
5
|
Requires-Dist: jinja2>=3.1.5
|
|
6
6
|
Requires-Dist: pyyaml>=6.0.2
|
|
@@ -87,6 +87,19 @@ source and experiments to remain in rename scope. Binary contents, VCS data, and
|
|
|
87
87
|
symlink targets are never changed. The outer workspace directory keeps its
|
|
88
88
|
existing name.
|
|
89
89
|
|
|
90
|
+
After applying the rename, RPR synchronizes Node and Python dependencies and
|
|
91
|
+
runs uncached Nx build, Rust-engine build, and typecheck targets with the Nx
|
|
92
|
+
daemon disabled. This verifies the renamed project graph and commands without
|
|
93
|
+
deleting the existing Nx cache. Pass `--skip-verify` to omit these checks; a
|
|
94
|
+
dry run previews them without executing anything. If verification fails, the
|
|
95
|
+
rename remains applied and RPR prints the command to retry.
|
|
96
|
+
|
|
97
|
+
The success output includes a guarded command for optionally renaming the outer
|
|
98
|
+
workspace directory. Git remotes and hosted repository names are never changed.
|
|
99
|
+
When a hosted repository still matches the old project name, rename it through
|
|
100
|
+
the hosting provider if desired and then update its local URL with
|
|
101
|
+
`git remote set-url`. Local and remote branch names are unaffected.
|
|
102
|
+
|
|
90
103
|
`rpr init <project-name>` creates the project directory when it does not exist. If the directory already exists and is not an NX workspace, RPR initializes Git and runs `nx init` inside that directory.
|
|
91
104
|
|
|
92
105
|
By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold` or pass a comma-separated list:
|
|
@@ -271,9 +284,11 @@ No `PYPI_API_TOKEN` secret is required when publishing through GitHub Actions OI
|
|
|
271
284
|
Release flow:
|
|
272
285
|
|
|
273
286
|
```bash
|
|
274
|
-
#
|
|
275
|
-
|
|
276
|
-
git
|
|
287
|
+
rpr version bump patch # updates Python, Cargo.toml, and Cargo.lock
|
|
288
|
+
# Or repair/set an explicit version: rpr version set 0.3.9
|
|
289
|
+
git add src/rpr/__init__.py rpr-parser/Cargo.toml rpr-parser/Cargo.lock
|
|
290
|
+
git commit -m "Release 0.3.9"
|
|
291
|
+
git tag v0.3.9
|
|
277
292
|
git push origin main --tags
|
|
278
293
|
```
|
|
279
294
|
|
|
@@ -70,6 +70,19 @@ source and experiments to remain in rename scope. Binary contents, VCS data, and
|
|
|
70
70
|
symlink targets are never changed. The outer workspace directory keeps its
|
|
71
71
|
existing name.
|
|
72
72
|
|
|
73
|
+
After applying the rename, RPR synchronizes Node and Python dependencies and
|
|
74
|
+
runs uncached Nx build, Rust-engine build, and typecheck targets with the Nx
|
|
75
|
+
daemon disabled. This verifies the renamed project graph and commands without
|
|
76
|
+
deleting the existing Nx cache. Pass `--skip-verify` to omit these checks; a
|
|
77
|
+
dry run previews them without executing anything. If verification fails, the
|
|
78
|
+
rename remains applied and RPR prints the command to retry.
|
|
79
|
+
|
|
80
|
+
The success output includes a guarded command for optionally renaming the outer
|
|
81
|
+
workspace directory. Git remotes and hosted repository names are never changed.
|
|
82
|
+
When a hosted repository still matches the old project name, rename it through
|
|
83
|
+
the hosting provider if desired and then update its local URL with
|
|
84
|
+
`git remote set-url`. Local and remote branch names are unaffected.
|
|
85
|
+
|
|
73
86
|
`rpr init <project-name>` creates the project directory when it does not exist. If the directory already exists and is not an NX workspace, RPR initializes Git and runs `nx init` inside that directory.
|
|
74
87
|
|
|
75
88
|
By default, `rpr init` scaffolds the root workspace and AI instructions only. To create project components during initialization, repeat `--scaffold` or pass a comma-separated list:
|
|
@@ -254,9 +267,11 @@ No `PYPI_API_TOKEN` secret is required when publishing through GitHub Actions OI
|
|
|
254
267
|
Release flow:
|
|
255
268
|
|
|
256
269
|
```bash
|
|
257
|
-
#
|
|
258
|
-
|
|
259
|
-
git
|
|
270
|
+
rpr version bump patch # updates Python, Cargo.toml, and Cargo.lock
|
|
271
|
+
# Or repair/set an explicit version: rpr version set 0.3.9
|
|
272
|
+
git add src/rpr/__init__.py rpr-parser/Cargo.toml rpr-parser/Cargo.lock
|
|
273
|
+
git commit -m "Release 0.3.9"
|
|
274
|
+
git tag v0.3.9
|
|
260
275
|
git push origin main --tags
|
|
261
276
|
```
|
|
262
277
|
|
|
@@ -158,16 +158,27 @@ impl Replacer {
|
|
|
158
158
|
let mut position = 0;
|
|
159
159
|
let mut replacements = 0;
|
|
160
160
|
while position < text.len() {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
161
|
+
let new_match = self.match_new(text, position);
|
|
162
|
+
let old_match = self.match_old(text, position);
|
|
163
|
+
match (old_match, new_match) {
|
|
164
|
+
(Some((old, new)), Some(existing)) if old.len() > existing.len() => {
|
|
165
|
+
output.push_str(new);
|
|
166
|
+
position += old.len();
|
|
167
|
+
replacements += 1;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
(_, Some(existing)) => {
|
|
171
|
+
output.push_str(existing);
|
|
172
|
+
position += existing.len();
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
(Some((old, new)), None) => {
|
|
176
|
+
output.push_str(new);
|
|
177
|
+
position += old.len();
|
|
178
|
+
replacements += 1;
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
(None, None) => {}
|
|
171
182
|
}
|
|
172
183
|
let ch = text[position..]
|
|
173
184
|
.chars()
|
|
@@ -182,12 +193,16 @@ impl Replacer {
|
|
|
182
193
|
fn has_stale_reference(&self, text: &str) -> bool {
|
|
183
194
|
let mut position = 0;
|
|
184
195
|
while position < text.len() {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
196
|
+
let new_match = self.match_new(text, position);
|
|
197
|
+
let old_match = self.match_old(text, position);
|
|
198
|
+
match (old_match, new_match) {
|
|
199
|
+
(Some((old, _)), Some(existing)) if old.len() > existing.len() => return true,
|
|
200
|
+
(_, Some(existing)) => {
|
|
201
|
+
position += existing.len();
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
(Some(_), None) => return true,
|
|
205
|
+
(None, None) => {}
|
|
191
206
|
}
|
|
192
207
|
position += text[position..].chars().next().unwrap().len_utf8();
|
|
193
208
|
}
|
|
@@ -288,6 +303,7 @@ pub fn plan(root: PathBuf, new_name: String) -> Result<NativeRenamePlan, String>
|
|
|
288
303
|
validate_new_name(&old_name, &new_name)?;
|
|
289
304
|
let replacer = Replacer::new(build_replacements(&old_name, &new_name, variables));
|
|
290
305
|
let (entries, mut skipped) = walk_workspace(&root)?;
|
|
306
|
+
validate_unicode_paths(&root, &entries, &skipped)?;
|
|
291
307
|
let files: Vec<_> = entries
|
|
292
308
|
.iter()
|
|
293
309
|
.filter(|entry| entry.is_file())
|
|
@@ -653,11 +669,37 @@ fn build_path_moves(
|
|
|
653
669
|
fn rename_relative_path(path: &Path, replacer: &Replacer) -> PathBuf {
|
|
654
670
|
let mut output = PathBuf::new();
|
|
655
671
|
for component in path.components() {
|
|
656
|
-
|
|
672
|
+
let component = component
|
|
673
|
+
.as_os_str()
|
|
674
|
+
.to_str()
|
|
675
|
+
.expect("workspace paths were validated as Unicode");
|
|
676
|
+
output.push(replacer.replace(component).0);
|
|
657
677
|
}
|
|
658
678
|
output
|
|
659
679
|
}
|
|
660
680
|
|
|
681
|
+
fn validate_unicode_paths(
|
|
682
|
+
root: &Path,
|
|
683
|
+
entries: &[PathBuf],
|
|
684
|
+
skipped: &[SkippedPath],
|
|
685
|
+
) -> Result<(), String> {
|
|
686
|
+
for entry in entries.iter().chain(skipped.iter().map(|item| &item.path)) {
|
|
687
|
+
let relative = entry
|
|
688
|
+
.strip_prefix(root)
|
|
689
|
+
.expect("walked path is beneath root");
|
|
690
|
+
if relative
|
|
691
|
+
.components()
|
|
692
|
+
.any(|component| component.as_os_str().to_str().is_none())
|
|
693
|
+
{
|
|
694
|
+
return Err(format!(
|
|
695
|
+
"Workspace path is not valid Unicode and cannot be renamed safely: {:?}",
|
|
696
|
+
entry.as_os_str()
|
|
697
|
+
));
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
Ok(())
|
|
701
|
+
}
|
|
702
|
+
|
|
661
703
|
fn update_config(text: &str, new_name: &str) -> Result<(String, usize), String> {
|
|
662
704
|
let mut config: Value = serde_yaml::from_str(text)
|
|
663
705
|
.map_err(|error| format!("Renamed .rpr.yaml would be invalid: {error}"))?;
|
|
@@ -1005,6 +1047,28 @@ mod tests {
|
|
|
1005
1047
|
assert_eq!(count, 1);
|
|
1006
1048
|
}
|
|
1007
1049
|
|
|
1050
|
+
#[test]
|
|
1051
|
+
fn longest_token_wins_for_shortening_and_expansion() {
|
|
1052
|
+
let shortening = Replacer::new(HashMap::from([
|
|
1053
|
+
("foo-bar".into(), "foo".into()),
|
|
1054
|
+
("foo_bar".into(), "foo".into()),
|
|
1055
|
+
("FooBar".into(), "Foo".into()),
|
|
1056
|
+
]));
|
|
1057
|
+
let (output, count) =
|
|
1058
|
+
shortening.replace("nx serve foo-bar-web; from foo_bar_domain import FooBarService");
|
|
1059
|
+
assert_eq!(
|
|
1060
|
+
output,
|
|
1061
|
+
"nx serve foo-web; from foo_domain import FooService"
|
|
1062
|
+
);
|
|
1063
|
+
assert_eq!(count, 3);
|
|
1064
|
+
assert!(!shortening.has_stale_reference(&output));
|
|
1065
|
+
|
|
1066
|
+
let expansion = Replacer::new(HashMap::from([("foo".into(), "foo-bar".into())]));
|
|
1067
|
+
let (output, count) = expansion.replace("foo foo-bar");
|
|
1068
|
+
assert_eq!(output, "foo-bar foo-bar");
|
|
1069
|
+
assert_eq!(count, 1);
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1008
1072
|
#[test]
|
|
1009
1073
|
fn bootstrap_defaults_cover_named_virtual_environments() {
|
|
1010
1074
|
let temp = tempfile::tempdir().unwrap();
|
|
@@ -1046,6 +1110,40 @@ mod tests {
|
|
|
1046
1110
|
.contains("new_app_domain"));
|
|
1047
1111
|
}
|
|
1048
1112
|
|
|
1113
|
+
#[test]
|
|
1114
|
+
fn shortening_rename_updates_nested_paths_and_references() {
|
|
1115
|
+
let temp = workspace();
|
|
1116
|
+
let plan = plan(temp.path().to_path_buf(), "my".into()).unwrap();
|
|
1117
|
+
|
|
1118
|
+
apply(&plan).unwrap();
|
|
1119
|
+
|
|
1120
|
+
let renamed = temp
|
|
1121
|
+
.path()
|
|
1122
|
+
.join("packages/python/my_domain/src/my_domain/main.py");
|
|
1123
|
+
assert!(renamed.is_file());
|
|
1124
|
+
assert!(fs::read_to_string(renamed).unwrap().contains("my_domain"));
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
#[cfg(unix)]
|
|
1128
|
+
#[test]
|
|
1129
|
+
fn non_unicode_workspace_path_aborts_planning() {
|
|
1130
|
+
use std::ffi::OsString;
|
|
1131
|
+
use std::os::unix::ffi::OsStringExt;
|
|
1132
|
+
|
|
1133
|
+
let temp = workspace();
|
|
1134
|
+
let invalid = temp
|
|
1135
|
+
.path()
|
|
1136
|
+
.join(OsString::from_vec(b"my-app-\xff.txt".to_vec()));
|
|
1137
|
+
write(&invalid, b"my-app\n");
|
|
1138
|
+
|
|
1139
|
+
let error = plan(temp.path().to_path_buf(), "new-app".into())
|
|
1140
|
+
.err()
|
|
1141
|
+
.expect("non-Unicode path should fail planning");
|
|
1142
|
+
|
|
1143
|
+
assert!(error.contains("not valid Unicode"));
|
|
1144
|
+
assert!(temp.path().join("packages/python/my_app_domain").is_dir());
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1049
1147
|
#[test]
|
|
1050
1148
|
fn ignored_virtual_environment_is_never_planned_or_validated() {
|
|
1051
1149
|
let temp = workspace();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.3.10"
|
|
@@ -33,6 +33,13 @@ sync_app = typer.Typer(
|
|
|
33
33
|
)
|
|
34
34
|
app.add_typer(sync_app, name="sync")
|
|
35
35
|
|
|
36
|
+
version_app = typer.Typer(
|
|
37
|
+
name="version",
|
|
38
|
+
help="Manage synchronized Python and Rust release versions.",
|
|
39
|
+
no_args_is_help=True,
|
|
40
|
+
)
|
|
41
|
+
app.add_typer(version_app, name="version")
|
|
42
|
+
|
|
36
43
|
refresh_app = typer.Typer(
|
|
37
44
|
name="refresh",
|
|
38
45
|
help="Refresh repo-owned manifests from upstream registries.",
|
|
@@ -61,6 +68,7 @@ from rpr.commands.generate import ui as _ui_mod # noqa: E402, F401
|
|
|
61
68
|
from rpr.commands.generate import engine as _engine_mod # noqa: E402, F401
|
|
62
69
|
from rpr.commands.generate import storybook as _storybook_mod # noqa: E402, F401
|
|
63
70
|
from rpr.commands import sync as _sync_mod # noqa: E402, F401
|
|
71
|
+
from rpr.commands import version as _version_mod # noqa: E402, F401
|
|
64
72
|
from rpr.commands import refresh as _refresh_mod # noqa: E402, F401
|
|
65
73
|
from rpr.commands import update as _update_mod # noqa: E402, F401
|
|
66
74
|
from rpr.commands import add as _add_mod # noqa: E402, F401
|