Build and Push Docker Container / build-and-push (push) Successful in 2m25s
- Require Python 3.15 for the server and Python 3.14 for the CLI. - Match the server requirement to quart_common's Python 3.15 features. - Replace future annotations with native deferred evaluation. - Defer CLI command dependencies and QR imports on Python 3.15. - Enable argparse suggestions for mistyped CLI commands. - Remove the obsolete tomllib import fallback. - Update my_helpers and quart_common submodule references. - Lock test dependencies and exclude them from Docker installations. - Add regression coverage for lazy imports and deferred annotations. - Document runtime requirements and standalone CLI validation. - Validate 276 tests on Python 3.15 and 18 CLI tests on Python 3.14. BREAKING CHANGE: The server now requires Python 3.15+ and the standalone CLI requires Python 3.14+.
17 lines
651 B
Python
17 lines
651 B
Python
from pathlib import PurePosixPath
|
|
|
|
def split_remote_path(value: str, file_id: str = '') -> tuple[str, str]:
|
|
raw = (value or file_id).replace('\\', '/')
|
|
parts = [
|
|
part for part in PurePosixPath(raw).parts
|
|
if part not in ('', '.', '..', '/')
|
|
]
|
|
if not parts:
|
|
return file_id, ''
|
|
return parts[-1], '/'.join(parts[:-1])
|
|
|
|
def join_remote_path(file_name: str, file_path: str | None = None, file_id: str = '') -> str:
|
|
name, embedded_path = split_remote_path(file_name, file_id)
|
|
clean_path = split_remote_path(f'{file_path or ""}/placeholder')[1] if file_path else embedded_path
|
|
return f'{clean_path}/{name}' if clean_path else name
|