fss-cli 0.11.0__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.
Files changed (106) hide show
  1. fss_cli-0.11.0/CHANGELOG.md +260 -0
  2. fss_cli-0.11.0/LICENSE +661 -0
  3. fss_cli-0.11.0/PKG-INFO +144 -0
  4. fss_cli-0.11.0/README.md +111 -0
  5. fss_cli-0.11.0/pyproject.toml +87 -0
  6. fss_cli-0.11.0/pyproject.toml.orig +84 -0
  7. fss_cli-0.11.0/src/fss_cli/__init__.py +24 -0
  8. fss_cli-0.11.0/src/fss_cli/_accounts.py +29 -0
  9. fss_cli-0.11.0/src/fss_cli/_app.py +663 -0
  10. fss_cli-0.11.0/src/fss_cli/_cat.py +391 -0
  11. fss_cli-0.11.0/src/fss_cli/_command.py +368 -0
  12. fss_cli-0.11.0/src/fss_cli/_concurrent.py +181 -0
  13. fss_cli-0.11.0/src/fss_cli/_content.py +94 -0
  14. fss_cli-0.11.0/src/fss_cli/_copy_file.py +65 -0
  15. fss_cli-0.11.0/src/fss_cli/_cp.py +740 -0
  16. fss_cli-0.11.0/src/fss_cli/_diagnostics.py +12 -0
  17. fss_cli-0.11.0/src/fss_cli/_du.py +90 -0
  18. fss_cli-0.11.0/src/fss_cli/_find.py +109 -0
  19. fss_cli-0.11.0/src/fss_cli/_head_tail.py +128 -0
  20. fss_cli-0.11.0/src/fss_cli/_info.py +179 -0
  21. fss_cli-0.11.0/src/fss_cli/_listing.py +289 -0
  22. fss_cli-0.11.0/src/fss_cli/_logging.py +72 -0
  23. fss_cli-0.11.0/src/fss_cli/_ls.py +435 -0
  24. fss_cli-0.11.0/src/fss_cli/_manifest.py +264 -0
  25. fss_cli-0.11.0/src/fss_cli/_metadata.py +70 -0
  26. fss_cli-0.11.0/src/fss_cli/_mkdir.py +97 -0
  27. fss_cli-0.11.0/src/fss_cli/_mv.py +146 -0
  28. fss_cli-0.11.0/src/fss_cli/_path.py +62 -0
  29. fss_cli-0.11.0/src/fss_cli/_post_copy.py +191 -0
  30. fss_cli-0.11.0/src/fss_cli/_progress.py +132 -0
  31. fss_cli-0.11.0/src/fss_cli/_recursive_cp.py +908 -0
  32. fss_cli-0.11.0/src/fss_cli/_recursive_rm.py +335 -0
  33. fss_cli-0.11.0/src/fss_cli/_results.py +115 -0
  34. fss_cli-0.11.0/src/fss_cli/_rm.py +149 -0
  35. fss_cli-0.11.0/src/fss_cli/_rmdir.py +148 -0
  36. fss_cli-0.11.0/src/fss_cli/_size.py +95 -0
  37. fss_cli-0.11.0/src/fss_cli/_sources.py +178 -0
  38. fss_cli-0.11.0/src/fss_cli/_stat.py +196 -0
  39. fss_cli-0.11.0/src/fss_cli/_test.py +59 -0
  40. fss_cli-0.11.0/src/fss_cli/_tree.py +208 -0
  41. fss_cli-0.11.0/src/fss_cli/_unlink.py +90 -0
  42. fss_cli-0.11.0/src/fss_cli/_walk.py +141 -0
  43. fss_cli-0.11.0/tests/__init__.py +1 -0
  44. fss_cli-0.11.0/tests/_ansi.py +8 -0
  45. fss_cli-0.11.0/tests/_cat_process_child.py +133 -0
  46. fss_cli-0.11.0/tests/_info_process_child.py +45 -0
  47. fss_cli-0.11.0/tests/_installed_wheel_gate.py +322 -0
  48. fss_cli-0.11.0/tests/_matrix_support.py +1282 -0
  49. fss_cli-0.11.0/tests/_network_guard.py +13 -0
  50. fss_cli-0.11.0/tests/_output_process_child.py +114 -0
  51. fss_cli-0.11.0/tests/_process_support.py +116 -0
  52. fss_cli-0.11.0/tests/_support.py +546 -0
  53. fss_cli-0.11.0/tests/_vosfs_matrix_support.py +159 -0
  54. fss_cli-0.11.0/tests/conftest.py +10 -0
  55. fss_cli-0.11.0/tests/test_app.py +519 -0
  56. fss_cli-0.11.0/tests/test_backend_fallbacks.py +190 -0
  57. fss_cli-0.11.0/tests/test_cat.py +1379 -0
  58. fss_cli-0.11.0/tests/test_cat_process.py +266 -0
  59. fss_cli-0.11.0/tests/test_command_cancellation.py +78 -0
  60. fss_cli-0.11.0/tests/test_command_help.py +54 -0
  61. fss_cli-0.11.0/tests/test_command_labels.py +226 -0
  62. fss_cli-0.11.0/tests/test_command_matrix.py +1087 -0
  63. fss_cli-0.11.0/tests/test_concurrent.py +208 -0
  64. fss_cli-0.11.0/tests/test_cp.py +1903 -0
  65. fss_cli-0.11.0/tests/test_cp_verification.py +876 -0
  66. fss_cli-0.11.0/tests/test_directory_listing.py +571 -0
  67. fss_cli-0.11.0/tests/test_distribution.py +125 -0
  68. fss_cli-0.11.0/tests/test_du.py +400 -0
  69. fss_cli-0.11.0/tests/test_du_command_matrix.py +178 -0
  70. fss_cli-0.11.0/tests/test_find.py +613 -0
  71. fss_cli-0.11.0/tests/test_find_command_matrix.py +198 -0
  72. fss_cli-0.11.0/tests/test_head_tail.py +637 -0
  73. fss_cli-0.11.0/tests/test_head_tail_command_matrix.py +308 -0
  74. fss_cli-0.11.0/tests/test_info.py +583 -0
  75. fss_cli-0.11.0/tests/test_info_command_matrix.py +225 -0
  76. fss_cli-0.11.0/tests/test_listing.py +299 -0
  77. fss_cli-0.11.0/tests/test_logging.py +239 -0
  78. fss_cli-0.11.0/tests/test_long_directory_listing.py +295 -0
  79. fss_cli-0.11.0/tests/test_mkdir.py +778 -0
  80. fss_cli-0.11.0/tests/test_mv.py +841 -0
  81. fss_cli-0.11.0/tests/test_operand_concurrency.py +175 -0
  82. fss_cli-0.11.0/tests/test_output.py +501 -0
  83. fss_cli-0.11.0/tests/test_output_process.py +128 -0
  84. fss_cli-0.11.0/tests/test_path.py +109 -0
  85. fss_cli-0.11.0/tests/test_recursive_cp.py +1259 -0
  86. fss_cli-0.11.0/tests/test_recursive_cp_adapters.py +571 -0
  87. fss_cli-0.11.0/tests/test_recursive_cp_failures.py +929 -0
  88. fss_cli-0.11.0/tests/test_recursive_cp_lifecycle.py +574 -0
  89. fss_cli-0.11.0/tests/test_recursive_rm.py +958 -0
  90. fss_cli-0.11.0/tests/test_rm.py +1661 -0
  91. fss_cli-0.11.0/tests/test_rmdir.py +633 -0
  92. fss_cli-0.11.0/tests/test_size.py +357 -0
  93. fss_cli-0.11.0/tests/test_size_test_command_matrix.py +311 -0
  94. fss_cli-0.11.0/tests/test_slashless_metadata.py +54 -0
  95. fss_cli-0.11.0/tests/test_source_acquisition.py +211 -0
  96. fss_cli-0.11.0/tests/test_source_cleanup.py +412 -0
  97. fss_cli-0.11.0/tests/test_stat.py +520 -0
  98. fss_cli-0.11.0/tests/test_test.py +280 -0
  99. fss_cli-0.11.0/tests/test_tree.py +715 -0
  100. fss_cli-0.11.0/tests/test_tree_command_matrix.py +271 -0
  101. fss_cli-0.11.0/tests/test_typed_cp.py +102 -0
  102. fss_cli-0.11.0/tests/test_typed_query_commands.py +77 -0
  103. fss_cli-0.11.0/tests/test_typed_rm.py +71 -0
  104. fss_cli-0.11.0/tests/test_unlink.py +459 -0
  105. fss_cli-0.11.0/tests/test_vosfs_command_matrix.py +660 -0
  106. fss_cli-0.11.0/tests/test_vosfs_recursive_command_matrix.py +456 -0
@@ -0,0 +1,260 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ### Features
6
+
7
+ * `mv` calls `_mv_file` when the backend overrides it, and otherwise a
8
+ class-declared `_mv`.
9
+ * `stat` accepts an integer, float, datetime, or ISO-8601 `mtime`, using the
10
+ same UTC normalization as listings for values without a timezone.
11
+ * `tail` requests the suffix with `start=-n`.
12
+ * A recursive copy skips the SHA-256 download when both sides have an MD5
13
+ and the digests differ.
14
+ * Same-source `cp -R` copies each file with `_cp_file` unless the sizes match
15
+ and an MD5 is missing, in which case it still stages to compare bytes.
16
+ An unsupported copy hook falls back to client download and upload.
17
+ Cross-source copies still stage. Destination listing is optional when
18
+ direct metadata queries are available; sparse lookups remain concurrent.
19
+ * Multi-source `cp` runs under the shared concurrency limit and prints
20
+ outcomes in operand order.
21
+ * `ls` preserves direct link identity before listing directory children.
22
+ Shared listing validation rejects duplicate lexical paths and accepts
23
+ backend names with or without a leading slash.
24
+
25
+ * **fsspec-cli:** add source-free `basename string` lexical command (#123)
26
+ * **fsspec-cli:** add optional `basename` suffix operand ([#124](https://github.com/shinybrar/vosfs/issues/124))
27
+ * **fsspec-cli:** add source-free `dirname string` lexical command (#125)
28
+ * Add mapped-file `cat` with whole-object `_get_file` staging and bounded
29
+ binary stdout.
30
+ * **fsspec-cli:** add binary stdin and `-` sequencing for `cat`
31
+ ([#127](https://github.com/shinybrar/vosfs/issues/127))
32
+ * **fsspec-cli:** add base `mkdir` without parent creation ([#128](https://github.com/shinybrar/vosfs/issues/128)).
33
+ Passing results claim only source-default creation semantics, not POSIX mode
34
+ or umask behavior.
35
+ * **fsspec-cli:** add parent-creating `mkdir -p` through `_makedirs` ([#129](https://github.com/shinybrar/vosfs/issues/129)).
36
+ Passing results claim only source-default creation semantics, not POSIX mode
37
+ or umask behavior.
38
+ * **fsspec-cli:** add base empty-directory `rmdir` ([#130](https://github.com/shinybrar/vosfs/issues/130))
39
+ * **fsspec-cli:** add XSI `unlink` for one mapped file ([#131](https://github.com/shinybrar/vosfs/issues/131))
40
+ * **fsspec-cli:** add base file-only `rm` ([#132](https://github.com/shinybrar/vosfs/issues/132)).
41
+ Reuses the unlink confirmed `_rm_file` absence boundary for one or more files;
42
+ force, directory, recursion, verbose, and interactive options remain unsupported.
43
+
44
+ * **fsspec-cli:** add verified same-source two-operand `cp` ([#137](https://github.com/shinybrar/vosfs/issues/137)).
45
+ Passing rows prove target resolution, replacement, bytes, diagnostics, cleanup,
46
+ and partial state only — not POSIX mode, ownership, link identity, or timestamps.
47
+ * **fsspec-cli:** add verified two-operand recursive `cp -R` / `cp -r`
48
+ ([#286](https://github.com/shinybrar/vosfs/issues/286)).
49
+ All admitted routes use a bounded manifest and complete source and
50
+ destination metadata verification. Same-source files use `_cp_file` when a
51
+ local byte compare is unnecessary; every other file is staged on the host.
52
+ * **fsspec-cli:** add snapshotted application recursion capabilities. Recursive
53
+ copy defaults on; recursive removal defaults off. Capability policy is
54
+ explicit constructor input, not backend discovery or loaded configuration.
55
+ * **fsspec-cli:** add capability-gated guarded recursive `rm -R` / `rm -r`
56
+ ([#288](https://github.com/shinybrar/vosfs/issues/288)). The command builds a
57
+ bounded pre-mutation manifest, uses only four generic async hooks to plan and
58
+ remove entries, proves final absence, and reports possible residue without
59
+ promising rollback or atomicity.
60
+
61
+ ### Changed
62
+
63
+ * Parameterize private command orchestration with concrete command labels
64
+ without adding a supported command or public runner.
65
+
66
+ ## [0.11.0](https://github.com/opencadc/fsspec-tools/compare/fss-cli-v0.10.0...fss-cli-v0.11.0) (2026-10-22)
67
+
68
+
69
+ ### ⚠ BREAKING CHANGES
70
+
71
+ * **vosfs,fss-cli:** User paths are literal. Percent escapes are no longer decoded by strip_protocol; callers must pass spaces and other filename characters literally. Server-returned node URIs are still decoded once.
72
+ * **fss-cli:** the distribution is now fss-cli and the import package is fss_cli. Replace fsspec-cli with fss-cli in requirements, and fsspec_cli with fss_cli in imports and logging configuration. No compatibility alias is provided.
73
+ * **vosfs,fss-cli:** vosfs and fsspec-cli are now distributed under the GNU Affero General Public License v3.0 or later. vosfs 0.11.0, fsspec-cli 0.10.0 and earlier releases remain under the BSD 3-Clause License.
74
+
75
+ ### Features
76
+
77
+ * **fss-cli:** bold directory names in ls on a terminal ([#24](https://github.com/opencadc/fsspec-tools/issues/24)) ([7c96d98](https://github.com/opencadc/fsspec-tools/commit/7c96d98fb8b5d78f215f3e7026295fb53c04c639))
78
+ * **fss-cli:** report cp progress and wait for destination metadata ([#25](https://github.com/opencadc/fsspec-tools/issues/25)) ([9fdba9c](https://github.com/opencadc/fsspec-tools/commit/9fdba9ce35cf7309ac9f6374d29706b607d4e0f0))
79
+
80
+
81
+ ### Bug Fixes
82
+
83
+ * **fss-cli:** accept slashless recursive metadata ([69d2782](https://github.com/opencadc/fsspec-tools/commit/69d2782532aa33ed17076cfebaabdce766c60b45))
84
+ * **fss-cli:** drain filesystem hooks before source cleanup ([54fa0e6](https://github.com/opencadc/fsspec-tools/commit/54fa0e6b2e18c67c8f2a4a65250fc0921a57cb7e))
85
+ * **vosfs,fss-cli:** preserve transfer fallbacks ([#27](https://github.com/opencadc/fsspec-tools/issues/27)) ([ac2ef20](https://github.com/opencadc/fsspec-tools/commit/ac2ef2031b4d9134867f080f3ebf6b72f6389be0))
86
+
87
+
88
+ ### Documentation
89
+
90
+ * **repo:** share the package site and configure Pages deployment ([ce0e0a6](https://github.com/opencadc/fsspec-tools/commit/ce0e0a60f887b387bf5d4c75fd4d06576b608ff4))
91
+ * **vosfs,fss-cli:** clarify package guides and internal documentation ([2809d38](https://github.com/opencadc/fsspec-tools/commit/2809d38c3ad50569d8faa0e3b95ce599ecbf9b24))
92
+
93
+
94
+ ### Code Refactoring
95
+
96
+ * **fss-cli:** rename fsspec-cli to fss-cli ([#19](https://github.com/opencadc/fsspec-tools/issues/19)) ([1346833](https://github.com/opencadc/fsspec-tools/commit/1346833371e38a59bc2f13b4ecd1892393f668ee))
97
+
98
+
99
+ ### Build System
100
+
101
+ * **vosfs,fss-cli:** relicense under AGPL-3.0-or-later ([#18](https://github.com/opencadc/fsspec-tools/issues/18)) ([c133a74](https://github.com/opencadc/fsspec-tools/commit/c133a74e23cd9230b9fe2dc30ef80b10c81c8bf7))
102
+
103
+ ## [0.10.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.9.0...fsspec-cli-v0.10.0) (2026-10-04)
104
+
105
+
106
+ ### Features
107
+
108
+ * log transfers and cut round trips in tree and bulk operations ([#347](https://github.com/shinybrar/vosfs/issues/347)) ([4463709](https://github.com/shinybrar/vosfs/commit/44637094edcb8f55dc91bcc12b6bf054ad3f0151))
109
+
110
+ ## [0.9.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.8.0...fsspec-cli-v0.9.0) (2026-10-02)
111
+
112
+
113
+ ### ⚠ BREAKING CHANGES
114
+
115
+ * **storage:** resume verified copies and restore shell listings ([#343](https://github.com/shinybrar/vosfs/issues/343))
116
+
117
+ ### Features
118
+
119
+ * **storage:** resume verified copies and restore shell listings ([#343](https://github.com/shinybrar/vosfs/issues/343)) ([0bbe991](https://github.com/shinybrar/vosfs/commit/0bbe9916a096b61838d669a673233963b81ae99d))
120
+
121
+ ## [0.8.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.7.0...fsspec-cli-v0.8.0) (2026-08-01)
122
+
123
+
124
+ ### ⚠ BREAKING CHANGES
125
+
126
+ * remove audited over-engineering across vosfs and fsspec-cli ([#339](https://github.com/shinybrar/vosfs/issues/339))
127
+
128
+ ### Code Refactoring
129
+
130
+ * remove audited over-engineering across vosfs and fsspec-cli ([#339](https://github.com/shinybrar/vosfs/issues/339)) ([ed0c368](https://github.com/shinybrar/vosfs/commit/ed0c368b29de7978398b36d5391e263e1bd57059))
131
+
132
+ ## [0.7.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.6.0...fsspec-cli-v0.7.0) (2026-07-25)
133
+
134
+
135
+ ### Features
136
+
137
+ * **vosfs:** honour HTTP Range when the byte endpoint returns 206 ([#335](https://github.com/shinybrar/vosfs/issues/335)) ([8a186cb](https://github.com/shinybrar/vosfs/commit/8a186cb8d45fc456d9ad91f31f3f48d32b8bf82a))
138
+
139
+ ## [0.6.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.5.0...fsspec-cli-v0.6.0) (2026-07-25)
140
+
141
+
142
+ ### ⚠ BREAKING CHANGES
143
+
144
+ * **fsspec-cli:** adopt Typer-owned commands ([#319](https://github.com/shinybrar/vosfs/issues/319))
145
+
146
+ ### Features
147
+
148
+ * **fsspec-cli:** adopt Typer-owned commands ([#319](https://github.com/shinybrar/vosfs/issues/319)) ([bdf94ca](https://github.com/shinybrar/vosfs/commit/bdf94ca811e23484af0522f5dc854772e4fb1401))
149
+
150
+ ## [0.5.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.4.0...fsspec-cli-v0.5.0) (2026-07-22)
151
+
152
+
153
+ ### Features
154
+
155
+ * **fsspec-cli:** add fsspec-compatible recursive operations ([#294](https://github.com/shinybrar/vosfs/issues/294)) ([9e5314d](https://github.com/shinybrar/vosfs/commit/9e5314db4706894d31d54d245392f43b9556cfbb))
156
+
157
+ ## [0.4.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.3.0...fsspec-cli-v0.4.0) (2026-07-21)
158
+
159
+
160
+ ### Features
161
+
162
+ * **vosfs:** complete OpenCADC profile hardening ([#279](https://github.com/shinybrar/vosfs/issues/279)) ([df0a65d](https://github.com/shinybrar/vosfs/commit/df0a65d0559cab1eff9b544d5c7927417f87ea07))
163
+
164
+ ## [0.3.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.2.1...fsspec-cli-v0.3.0) (2026-07-21)
165
+
166
+
167
+ ### Features
168
+
169
+ * **fsspec-cli:** add adaptive long listings ([#219](https://github.com/shinybrar/vosfs/issues/219)) ([86df794](https://github.com/shinybrar/vosfs/commit/86df794ce88e909ec5187008a722a783838db480))
170
+ * **fsspec-cli:** add du command ([#221](https://github.com/shinybrar/vosfs/issues/221)) ([eb02501](https://github.com/shinybrar/vosfs/commit/eb025011e85f4c3d742f412123400e349981af9b))
171
+ * **fsspec-cli:** add head and tail commands ([#228](https://github.com/shinybrar/vosfs/issues/228)) ([b16741d](https://github.com/shinybrar/vosfs/commit/b16741d0b35ae583895ed389d55f928bafd3e92e))
172
+ * **fsspec-cli:** add info command ([#230](https://github.com/shinybrar/vosfs/issues/230)) ([69e535b](https://github.com/shinybrar/vosfs/commit/69e535bbb470bcdd0a712044b3034097ebd84872))
173
+ * **fsspec-cli:** add info normalization layer ([#216](https://github.com/shinybrar/vosfs/issues/216)) ([b507a6e](https://github.com/shinybrar/vosfs/commit/b507a6e111405f5f81fd9cf4951957129181e449))
174
+ * **fsspec-cli:** add recursive find command ([#223](https://github.com/shinybrar/vosfs/issues/223)) ([6b657ed](https://github.com/shinybrar/vosfs/commit/6b657ed598a80c03bab229fce182596578bf2417))
175
+ * **fsspec-cli:** add size and test commands ([#226](https://github.com/shinybrar/vosfs/issues/226)) ([a45eeaa](https://github.com/shinybrar/vosfs/commit/a45eeaa6ba15ce63a148457701d0e5e820f5aebc))
176
+ * **fsspec-cli:** add tree command ([#229](https://github.com/shinybrar/vosfs/issues/229)) ([ebb2ae9](https://github.com/shinybrar/vosfs/commit/ebb2ae9d0a1771fabc2cdee3d595217145074fc3))
177
+ * **fsspec-cli:** complete backend-specific extension seam ([#240](https://github.com/shinybrar/vosfs/issues/240)) ([a9ace0f](https://github.com/shinybrar/vosfs/commit/a9ace0f5f630eb32dde5b9f2fde3c1f3b1e2a897))
178
+ * **fsspec-cli:** verify transfers with metadata ([#233](https://github.com/shinybrar/vosfs/issues/233)) ([4934375](https://github.com/shinybrar/vosfs/commit/4934375d10cda11879d739a60fa20ae7cbe729b6))
179
+
180
+ ## [0.2.1](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.2.0...fsspec-cli-v0.2.1) (2026-07-18)
181
+
182
+
183
+ ### Documentation
184
+
185
+ * **fsspec-cli:** reconcile Issue 120 catalog and later release ([#147](https://github.com/shinybrar/vosfs/issues/147)) ([#184](https://github.com/shinybrar/vosfs/issues/184)) ([d1e1918](https://github.com/shinybrar/vosfs/commit/d1e191895644657729cf7ea72e74fb688f7c6a8b))
186
+
187
+ ## [0.2.0](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.1.1...fsspec-cli-v0.2.0) (2026-07-17)
188
+
189
+
190
+ ### Features
191
+
192
+ * **fsspec-cli:** add base file-only rm ([#163](https://github.com/shinybrar/vosfs/issues/163)) ([f84e51e](https://github.com/shinybrar/vosfs/commit/f84e51e0dd3d2e210a26b9e5a7f2bf3288e7619c))
193
+ * **fsspec-cli:** add base mkdir without parent creation ([#154](https://github.com/shinybrar/vosfs/issues/154)) ([6243660](https://github.com/shinybrar/vosfs/commit/6243660f668ac9e1a9685b0bf602a8d7132a76d8))
194
+ * **fsspec-cli:** add binary mapped-file cat ([#156](https://github.com/shinybrar/vosfs/issues/156)) ([6df90ff](https://github.com/shinybrar/vosfs/commit/6df90ff3c8a6c1c07f1bb1e3ab892ddaa4fa03a2))
195
+ * **fsspec-cli:** add confirmed-removal rm -v ([#136](https://github.com/shinybrar/vosfs/issues/136)) ([#179](https://github.com/shinybrar/vosfs/issues/179)) ([e2ff33f](https://github.com/shinybrar/vosfs/commit/e2ff33fe882129a6df2ff51d08a05139a626ffb5))
196
+ * **fsspec-cli:** add empty-directory rmdir ([#157](https://github.com/shinybrar/vosfs/issues/157)) ([5567c84](https://github.com/shinybrar/vosfs/commit/5567c84bc1346debe7091d68d17ecde9647a5123))
197
+ * **fsspec-cli:** add exact rm -f profile ([#133](https://github.com/shinybrar/vosfs/issues/133)) ([#170](https://github.com/shinybrar/vosfs/issues/170)) ([5aecd2e](https://github.com/shinybrar/vosfs/commit/5aecd2edb22a03f50168453af090e9d607f60628))
198
+ * **fsspec-cli:** add mkdir -p through delegated _makedirs ([#129](https://github.com/shinybrar/vosfs/issues/129)) ([#161](https://github.com/shinybrar/vosfs/issues/161)) ([3380746](https://github.com/shinybrar/vosfs/commit/338074602ef2adc5317f4794afc75e1f7025a27e))
199
+ * **fsspec-cli:** add optional basename suffix operand ([#124](https://github.com/shinybrar/vosfs/issues/124)) ([#159](https://github.com/shinybrar/vosfs/issues/159)) ([98b8fe3](https://github.com/shinybrar/vosfs/commit/98b8fe3c3051d5adecf0ab7c8dfdcaa290ddea2f))
200
+ * **fsspec-cli:** add reduced BSD/macOS-shaped stat ([#146](https://github.com/shinybrar/vosfs/issues/146)) ([2971c43](https://github.com/shinybrar/vosfs/commit/2971c4347fed67e2c18d7547d79bbd5696e1055c))
201
+ * **fsspec-cli:** add rm -d for files and empty directories ([#134](https://github.com/shinybrar/vosfs/issues/134)) ([#176](https://github.com/shinybrar/vosfs/issues/176)) ([7252765](https://github.com/shinybrar/vosfs/commit/7252765e56cfd3c4fa91c8c6f8040978ff692be8))
202
+ * **fsspec-cli:** add same-source file mv ([#141](https://github.com/shinybrar/vosfs/issues/141)) ([#171](https://github.com/shinybrar/vosfs/issues/171)) ([b0cdbbb](https://github.com/shinybrar/vosfs/commit/b0cdbbb0b02437e7c4d1aeea23e989ea5944c7d6))
203
+ * **fsspec-cli:** add source-free basename string command ([#153](https://github.com/shinybrar/vosfs/issues/153)) ([c074e37](https://github.com/shinybrar/vosfs/commit/c074e370fd3727f1e53b446395829889cf3a03d6))
204
+ * **fsspec-cli:** add source-free dirname string ([#125](https://github.com/shinybrar/vosfs/issues/125)) ([#160](https://github.com/shinybrar/vosfs/issues/160)) ([4cb5e56](https://github.com/shinybrar/vosfs/commit/4cb5e56ffdf57c092c8078eb4ab6f49c7642580c))
205
+ * **fsspec-cli:** add verified cross-source cp ([#138](https://github.com/shinybrar/vosfs/issues/138)) ([#172](https://github.com/shinybrar/vosfs/issues/172)) ([063f174](https://github.com/shinybrar/vosfs/commit/063f1741b5e2a323119769c4a1f3e36754428bac))
206
+ * **fsspec-cli:** add verified same-source two-operand cp ([#137](https://github.com/shinybrar/vosfs/issues/137)) ([#164](https://github.com/shinybrar/vosfs/issues/164)) ([ef371b5](https://github.com/shinybrar/vosfs/commit/ef371b588f5e61cb6b5de6e6034d5eb1a68c3a6f))
207
+ * **fsspec-cli:** add XSI unlink for one mapped file ([#155](https://github.com/shinybrar/vosfs/issues/155)) ([371bf98](https://github.com/shinybrar/vosfs/commit/371bf98504046813e2a601f04f2d8a05c0b27a61))
208
+ * **fsspec-cli:** binary stdin and dash sequencing for cat ([#162](https://github.com/shinybrar/vosfs/issues/162)) ([82ab5d5](https://github.com/shinybrar/vosfs/commit/82ab5d5fab8e9435f2b09eae6e3b7cff5c5c9bde)), closes [#127](https://github.com/shinybrar/vosfs/issues/127)
209
+ * **fsspec-cli:** exact multi-source cp with type=file ([#139](https://github.com/shinybrar/vosfs/issues/139)) ([d4194a9](https://github.com/shinybrar/vosfs/commit/d4194a93f50c5bdfe458fd23e9fef21514adc4d7))
210
+ * **fsspec-cli:** multi-file same-source mv into directory ([#144](https://github.com/shinybrar/vosfs/issues/144)) ([#180](https://github.com/shinybrar/vosfs/issues/180)) ([afcf3e1](https://github.com/shinybrar/vosfs/commit/afcf3e15cccecc8131bf6bf533eada1dce3a3b64))
211
+ * **fsspec-cli:** reject cross-source mv ([#142](https://github.com/shinybrar/vosfs/issues/142)) ([#174](https://github.com/shinybrar/vosfs/issues/174)) ([50a8f9f](https://github.com/shinybrar/vosfs/commit/50a8f9fd40040da316ce848ad64956f9dd618a62))
212
+
213
+
214
+ ### Bug Fixes
215
+
216
+ * **ci:** unwedge Windows hangs in cat subprocess tests ([440a6f2](https://github.com/shinybrar/vosfs/commit/440a6f25547b9290bd0ba86e197ee61408d73857))
217
+
218
+
219
+ ### Documentation
220
+
221
+ * **fsspec-cli:** reject directory mv after research ([#143](https://github.com/shinybrar/vosfs/issues/143)) ([fceef2d](https://github.com/shinybrar/vosfs/commit/fceef2d8963f88a31dd64ffc88352de40672cbc8))
222
+ * **fsspec-cli:** reject recursive cp -R admission ([#140](https://github.com/shinybrar/vosfs/issues/140)) ([#173](https://github.com/shinybrar/vosfs/issues/173)) ([be2fcb1](https://github.com/shinybrar/vosfs/commit/be2fcb14cec39ddac1ab99dde7df7ad9a6b59785))
223
+ * **fsspec-cli:** reject recursive rm -R/-r admission ([#135](https://github.com/shinybrar/vosfs/issues/135)) ([#175](https://github.com/shinybrar/vosfs/issues/175)) ([dc5eedb](https://github.com/shinybrar/vosfs/commit/dc5eedb3c76b8ffd13b9df223de2680e2132fb9c))
224
+
225
+ ## [0.1.1](https://github.com/shinybrar/vosfs/compare/fsspec-cli-v0.1.0...fsspec-cli-v0.1.1) (2026-07-17)
226
+
227
+
228
+ ### Features
229
+
230
+ * **fsspec-cli:** activate independent release automation ([#148](https://github.com/shinybrar/vosfs/issues/148)) ([0a9f730](https://github.com/shinybrar/vosfs/commit/0a9f7302dcc700fcd46ccc170b47ba7640cc83ac)), closes [#107](https://github.com/shinybrar/vosfs/issues/107) [#108](https://github.com/shinybrar/vosfs/issues/108)
231
+ * **fsspec-cli:** add async Typer boundary ([#111](https://github.com/shinybrar/vosfs/issues/111)) ([adfef30](https://github.com/shinybrar/vosfs/commit/adfef30158ab1d2a72dd5f9d924d3dd65b362415)), closes [#100](https://github.com/shinybrar/vosfs/issues/100)
232
+ * **fsspec-cli:** add deterministic ls renderer ([#115](https://github.com/shinybrar/vosfs/issues/115)) ([460d9fc](https://github.com/shinybrar/vosfs/commit/460d9fc37e54d7ca4672e5131a7e102a1a28a749)), closes [#103](https://github.com/shinybrar/vosfs/issues/103)
233
+ * **fsspec-cli:** add directory listing engine ([#117](https://github.com/shinybrar/vosfs/issues/117)) ([3efeb52](https://github.com/shinybrar/vosfs/commit/3efeb52e40f700aeb6983364dfae13de75e44c72)), closes [#102](https://github.com/shinybrar/vosfs/issues/102)
234
+ * **fsspec-cli:** manage source lifecycle ([#116](https://github.com/shinybrar/vosfs/issues/116)) ([1660dbe](https://github.com/shinybrar/vosfs/commit/1660dbeff0b34083de74af210dcd17f306bd2320)), closes [#101](https://github.com/shinybrar/vosfs/issues/101)
235
+
236
+
237
+ ### Bug Fixes
238
+
239
+ * **ci:** accept generated release changelogs ([308d45d](https://github.com/shinybrar/vosfs/commit/308d45d60da2b68686e6161f920c6616f5d066bd))
240
+
241
+ ## 0.1.0 (2026-07-17)
242
+
243
+
244
+ ### Features
245
+
246
+ * **fsspec-cli:** activate independent release automation ([#148](https://github.com/shinybrar/vosfs/issues/148)) ([0a9f730](https://github.com/shinybrar/vosfs/commit/0a9f7302dcc700fcd46ccc170b47ba7640cc83ac)), closes [#107](https://github.com/shinybrar/vosfs/issues/107) [#108](https://github.com/shinybrar/vosfs/issues/108)
247
+ * **fsspec-cli:** add async Typer boundary ([#111](https://github.com/shinybrar/vosfs/issues/111)) ([adfef30](https://github.com/shinybrar/vosfs/commit/adfef30158ab1d2a72dd5f9d924d3dd65b362415)), closes [#100](https://github.com/shinybrar/vosfs/issues/100)
248
+ * **fsspec-cli:** add deterministic ls renderer ([#115](https://github.com/shinybrar/vosfs/issues/115)) ([460d9fc](https://github.com/shinybrar/vosfs/commit/460d9fc37e54d7ca4672e5131a7e102a1a28a749)), closes [#103](https://github.com/shinybrar/vosfs/issues/103)
249
+ * **fsspec-cli:** add directory listing engine ([#117](https://github.com/shinybrar/vosfs/issues/117)) ([3efeb52](https://github.com/shinybrar/vosfs/commit/3efeb52e40f700aeb6983364dfae13de75e44c72)), closes [#102](https://github.com/shinybrar/vosfs/issues/102)
250
+ * **fsspec-cli:** manage source lifecycle ([#116](https://github.com/shinybrar/vosfs/issues/116)) ([1660dbe](https://github.com/shinybrar/vosfs/commit/1660dbeff0b34083de74af210dcd17f306bd2320)), closes [#101](https://github.com/shinybrar/vosfs/issues/101)
251
+
252
+
253
+ ### Bug Fixes
254
+
255
+ * **ci:** accept generated release changelogs ([308d45d](https://github.com/shinybrar/vosfs/commit/308d45d60da2b68686e6161f920c6616f5d066bd))
256
+
257
+ ## 0.0.0 (unreleased bootstrap)
258
+
259
+ No GitHub Release or tag was published for this bootstrap marker. Release
260
+ Please owns the first real `0.1.0` entry and every later version.