Files
mdrs-client-python/CHANGELOG.md
T
orrisroot 96bfceba7a build: require Python 3.11 or later
pydantic-settings and validators, at the versions required, support
Python 3.11 and later only.

- Raise requires-python, drop the 3.10 classifier and move black's
  target to py311.
2026-11-13 19:01:56 +09:00

6.5 KiB

Changelog

All notable changes to this project will be documented in this file.

[Unreleased]

Changed

  • Built access level labels from their bits instead of a fixed table of combinations, so a level the server adds later is labelled too. A project level (bit 16 and up) is named after the project as the server reports it to its members, e.g. Brain/MINDS 2.0 Open, and otherwise Project<n> Open. A restrict network other than CBS is Restrict<n> Open; 0x0200, formerly 5Kikan Open, is now Restrict2 Open.
  • chacl takes keys built the same way: cbs_or_pw_open, project0_open and so on. 5kikan_open is no longer accepted. Its help lists them, an invalid level lists the projects the user belongs to with their keys, and public and storage, which the server refuses, are refused before any request.
  • ls asks the server for the user's projects once per run when logged in.
  • Required Python 3.11 or later, as pydantic-settings and validators do.
  • Raised the minimum version of pydantic to 2.14.3, and of the development tools black, flake8, isort and pyright to their current releases.
  • Removed FolderAccessLevel.ACCESS_LEVELS and FolderAccessLevelItem. FolderSimple.access_level_label() labels a level with the project names given to it.

Fixed

  • Reported an access level that has no meaning as Unknown (0x…) instead of Storage. Storage is the absence of every bit, so it matched any level. A level made of known bits is no longer labelled by the first table entry it contained either: 0x10104 was CBS or PW Open. This changes the access_level value in ls output, including JSON.
  • Reported a locked folder that was fetched without its password as FolderLockedException, a subclass of UnauthorizedException, instead of a pydantic ValidationError. The server answers with a short record that has no sub-folders or path. A password-protected DOI folder fails this way before its password is sent, so it can now be opened again.

[1.3.20] - 2026-11-04

Changed

  • Raised the minimum versions of pydantic, pydantic-settings, python-dotenv, PyJWT and validators to their current releases.

Security

  • Required PyJWT 2.15.1 or later; releases before 2.14.0 have a known vulnerability.

[1.3.19] - 2026-09-04

Fixed

  • Reported failed transfers instead of ending in success, so a run that lost files exits non-zero.
  • Left an existing local file intact when a download fails part way through.
  • Opened password-protected DOI folders, which previously failed outright.
  • Kept a session working across concurrent runs and long server queues.
  • Other minor fixes to ls output and remote URL handling.

Changed

  • Moved packaging to PEP 621 metadata with flit as the build backend.
  • Updated dependencies.
  • Breaking for embedders: CacheInterface now requires lock() and reload().

[1.3.18] - 2026-07-02

Added

  • Added a comprehensive unit test suite in tests/test_commands.py checking registration, parsing, and execution flow of all 16 commands.

Refactored

  • Abstracted configuration storage (introducing ConfigInterface, InMemoryConfig, and updating ConfigFile) to enable dependency injection.
  • Modularized transfer operations (upload and download) to decouple them from the service layer.
  • Decoupled commands from direct file system configurations and migrated all subcommands to use abstract config classes.

Changed

  • Upgraded dependencies including pydantic-settings to 2.14.2 and pyright to 1.1.411.

Fixed

  • Fixed duplicate __all__ definitions in package initialization file mdrsclient/__init__.py that caused __version__ export to be overwritten.

[1.3.17] - 2026-07-02

Refactored

  • Decoupled core logic from CLI interface and introduced MdrsClient service layer to improve library portability.
  • Migrated all CLI commands to utilize MdrsClient for execution.

Added

  • Abstract authentication state using CacheInterface and InMemoryCache.

[1.3.16] - 2026-06-12

Fixed

  • Retrieve the full Folder object from FoldersApi instead of using the FolderSimple returned by find_sub_folder when resolving DOI subfolders. This fixes a type checker error under the upgraded pyright and avoids a potential AttributeError at runtime due to FolderSimple lacking the path attribute.

Changed

  • Upgraded dependencies and bumped version to 1.3.16 in pyproject.toml.

[1.3.15] - 2026-05-01

Fixed

  • Apply NFC normalization to filenames and folder names sent to the server.

[1.3.14] - 2026-04-17

Changed

  • Simplified config list command (removed -l/--long option, always display URL).
  • Renamed --quick option to --quiet for ls subcommand.

Added

  • Added subcommand aliases for config commands (e.g. ls alias for list, rm alias for delete).
  • Added version command.

[1.3.13] - 2025-07-02

Fixed

  • Fixed pagination logic for the file.list API.

[1.3.12] - 2025-05-20

Fixed

  • Fixed bug where file downloading was skipped incorrectly when -s/--skip-if-file-exists option was present.

[1.3.11] - 2025-01-21

Fixed

  • Follow-up fixes for User API specification changes.

[1.3.10] - 2024-12-23

Added

  • Delete broken files and show a summary when a file download fails.

Changed

  • Updated dependency libraries.

[1.3.9] - 2024-10-23

Fixed

  • Fixed compatibility with Python 3.10.

[1.3.8] - 2024-09-18

Added

  • Implemented -s/--skip-if-file-exists option for download command.

Fixed

  • Added exception handling for unexpected responses from the server.

[1.3.7] - 2024-07-22

Added

  • Implemented --exclude argument for download subcommand.

[1.3.6] - 2024-07-08

Added

  • Support cancelling recursive downloads if downloading some files fails.

[1.3.5] - 2024-07-08

Added

  • Added authorization token validation checks for file download operations.

Removed

  • Removed unnecessary debug code.

[1.3.4] - 2024-07-04

Added

  • Added some aliases for config sub command.

Fixed

  • Fixed bug when uploading large files.

[1.3.3] - 2024-02-13

Added

  • Implemented -s/--skip-if-file-exists option for upload command.

[1.3.2] - 2024-02-09

Added

  • Added -u and -p options to login command.

[1.3.1] - 2023-12-20

Fixed

  • Fixed bug to resolve local files for recursive file upload.

[1.3.0] - 2023-12-18

Changed

  • Removed debug comments.

[1.2.0] - 2023-10-04

Changed

  • Follow-up recent specification changes about folder access level.

[1.1.1] - 2023-07-26

Changed

  • Set destination folder name using name attribute of folder copy API.