Repository: Kimahriman/hdfs-native (language: python)

Issue:
Bump minimum Python to 3.9



Discussion / hints:

Fix patch:
diff --git a/Cargo.lock b/Cargo.lock
index 2ee121c..beb4568 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -58,12 +58,55 @@ version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
 
+[[package]]
+name = "anstream"
+version = "0.6.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
 [[package]]
 name = "anstyle"
 version = "1.0.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
 
+[[package]]
+name = "anstyle-parse"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.59.0",
+]
+
 [[package]]
 name = "anyhow"
 version = "1.0.92"
@@ -76,15 +119,6 @@ version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
 
-[[package]]
-name = "autotools"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf"
-dependencies = [
- "cc",
-]
-
 [[package]]
 name = "backtrace"
 version = "0.3.74"
@@ -102,9 +136,9 @@ dependencies = [
 
 [[package]]
 name = "base64"
-version = "0.21.7"
+version = "0.22.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
 
 [[package]]
 name = "bindgen"
@@ -125,7 +159,7 @@ dependencies = [
  "rustc-hash",
  "shlex",
  "syn 1.0.109",
- "which",
+ "which 4.4.2",
 ]
 
 [[package]]
@@ -302,6 +336,21 @@ version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
 
+[[package]]
+name = "cmake"
+version = "0.1.51"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
+
 [[package]]
 name = "core-foundation-sys"
 version = "0.8.7"
@@ -420,19 +469,6 @@ dependencies = [
  "cipher",
 ]
 
-[[package]]
-name = "dashmap"
-version = "5.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
-dependencies = [
- "cfg-if",
- "hashbrown 0.14.5",
- "lock_api",
- "once_cell",
- "parking_lot_core",
-]
-
 [[package]]
 name = "des"
 version = "0.8.1"
@@ -482,17 +518,27 @@ version = "1.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
 
+[[package]]
+name = "env_filter"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
+dependencies = [
+ "log",
+ "regex",
+]
+
 [[package]]
 name = "env_logger"
-version = "0.10.2"
+version = "0.11.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
+checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d"
 dependencies = [
+ "anstream",
+ "anstyle",
+ "env_filter",
  "humantime",
- "is-terminal",
  "log",
- "regex",
- "termcolor",
 ]
 
 [[package]]
@@ -706,12 +752,6 @@ dependencies = [
  "crunchy",
 ]
 
-[[package]]
-name = "hashbrown"
-version = "0.14.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
-
 [[package]]
 name = "hashbrown"
 version = "0.15.1"
@@ -760,7 +800,7 @@ dependencies = [
  "tokio",
  "url",
  "uuid",
- "which",
+ "which 7.0.0",
  "whoami",
 ]
 
@@ -777,12 +817,6 @@ dependencies = [
  "tokio",
 ]
 
-[[package]]
-name = "heck"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
 [[package]]
 name = "heck"
 version = "0.5.0"
@@ -1000,7 +1034,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
 dependencies = [
  "equivalent",
- "hashbrown 0.15.1",
+ "hashbrown",
 ]
 
 [[package]]
@@ -1030,6 +1064,12 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+
 [[package]]
 name = "itertools"
 version = "0.10.5"
@@ -1338,9 +1378,9 @@ dependencies = [
 
 [[package]]
 name = "prost"
-version = "0.12.6"
+version = "0.13.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29"
+checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f"
 dependencies = [
  "bytes",
  "prost-derive",
@@ -1348,12 +1388,12 @@ dependencies = [
 
 [[package]]
 name = "prost-build"
-version = "0.12.6"
+version = "0.13.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4"
+checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15"
 dependencies = [
  "bytes",
- "heck 0.5.0",
+ "heck",
  "itertools 0.12.1",
  "log",
  "multimap",
@@ -1369,9 +1409,9 @@ dependencies = [
 
 [[package]]
 name = "prost-derive"
-version = "0.12.6"
+version = "0.13.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1"
+checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5"
 dependencies = [
  "anyhow",
  "itertools 0.12.1",
@@ -1382,33 +1422,33 @@ dependencies = [
 
 [[package]]
 name = "prost-types"
-version = "0.12.6"
+version = "0.13.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0"
+checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670"
 dependencies = [
  "prost",
 ]
 
 [[package]]
 name = "protobuf-src"
-version = "1.1.0+21.5"
+version = "2.1.0+27.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1"
+checksum = "a7edafa3bcc668fa93efafcbdf58d7821bbda0f4b458ac7fae3d57ec0fec8167"
 dependencies = [
- "autotools",
+ "cmake",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.20.3"
+version = "0.22.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
+checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884"
 dependencies = [
  "cfg-if",
  "indoc",
  "libc",
  "memoffset",
- "parking_lot",
+ "once_cell",
  "portable-atomic",
  "pyo3-build-config",
  "pyo3-ffi",
@@ -1418,9 +1458,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.20.3"
+version = "0.22.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
+checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -1428,9 +1468,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.20.3"
+version = "0.22.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
+checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -1438,9 +1478,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.20.3"
+version = "0.22.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
+checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
@@ -1450,11 +1490,11 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.20.3"
+version = "0.22.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
+checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe"
 dependencies = [
- "heck 0.4.1",
+ "heck",
  "proc-macro2",
  "pyo3-build-config",
  "quote",
@@ -1560,12 +1600,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 
 [[package]]
 name = "roxmltree"
-version = "0.18.1"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "862340e351ce1b271a378ec53f304a5558f7db87f3769dc655a8f6ecbb68b302"
-dependencies = [
- "xmlparser",
-]
+checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
 
 [[package]]
 name = "rustc-demangle"
@@ -1607,12 +1644,27 @@ dependencies = [
  "winapi-util",
 ]
 
+[[package]]
+name = "scc"
+version = "2.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8d25269dd3a12467afe2e510f69fb0b46b698e5afb296b59f2145259deaf8e8"
+dependencies = [
+ "sdd",
+]
+
 [[package]]
 name = "scopeguard"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
+[[package]]
+name = "sdd"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95"
+
 [[package]]
 name = "serde"
 version = "1.0.214"
@@ -1647,23 +1699,23 @@ dependencies = [
 
 [[package]]
 name = "serial_test"
-version = "2.0.0"
+version = "3.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d"
+checksum = "1b258109f244e1d6891bf1053a55d63a5cd4f8f4c30cf9a1280989f80e7a1fa9"
 dependencies = [
- "dashmap",
  "futures",
- "lazy_static",
  "log",
+ "once_cell",
  "parking_lot",
+ "scc",
  "serial_test_derive",
 ]
 
 [[package]]
 name = "serial_test_derive"
-version = "2.0.0"
+version = "3.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
+checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1765,29 +1817,20 @@ dependencies = [
  "windows-sys 0.59.0",
 ]
 
-[[package]]
-name = "termcolor"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
-dependencies = [
- "winapi-util",
-]
-
 [[package]]
 name = "thiserror"
-version = "1.0.68"
+version = "2.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892"
+checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.68"
+version = "2.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e"
+checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1882,6 +1925,12 @@ version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
 
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
 [[package]]
 name = "uuid"
 version = "1.11.0"
@@ -1996,6 +2045,18 @@ dependencies = [
  "rustix",
 ]
 
+[[package]]
+name = "which"
+version = "7.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b"
+dependencies = [
+ "either",
+ "home",
+ "rustix",
+ "winsafe",
+]
+
 [[package]]
 name = "whoami"
 version = "1.5.2"
@@ -2173,6 +2234,12 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
+[[package]]
+name = "winsafe"
+version = "0.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
+
 [[package]]
 name = "write16"
 version = "1.0.0"
@@ -2185,12 +2252,6 @@ version = "0.5.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
 
-[[package]]
-name = "xmlparser"
-version = "0.13.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4"
-
 [[package]]
 name = "yoke"
 version = "0.7.4"
diff --git a/Cargo.toml b/Cargo.toml
index fb0340a..b44de33 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,8 +7,9 @@ resolver = "2"
 
 [workspace.dependencies]
 bytes = "1"
+env_logger = "0.11"
 log = "0.4"
-thiserror = "1"
+thiserror = "2"
 tokio = "1"
 
 [profile.bench]
diff --git a/python/Cargo.toml b/python/Cargo.toml
index e51a548..2dfb7a7 100644
--- a/python/Cargo.toml
+++ b/python/Cargo.toml
@@ -26,9 +26,9 @@ name = "hdfs_native._internal"
 
 [dependencies]
 bytes = { workspace = true } 
-env_logger = "0.10"
+env_logger = { workspace = true }
 hdfs-native = { path = "../rust" }
 log = { workspace = true }
-pyo3 = { version = "0.20", features = ["extension-module", "abi3", "abi3-py38"] }
+pyo3 = { version = "0.22", features = ["extension-module", "abi3", "abi3-py39"] }
 thiserror = { workspace = true }
 tokio = { workspace = true, features = ["rt-multi-thread"] }
diff --git a/python/pyproject.toml b/python/pyproject.toml
index 0e6032e..b00e4c4 100644
--- a/python/pyproject.toml
+++ b/python/pyproject.toml
@@ -6,7 +6,7 @@ build-backend = "maturin"
 name = "hdfs-native"
 description = "Python bindings for hdfs-native Rust library"
 readme = "README.md"
-requires-python = ">=3.8"
+requires-python = ">=3.9"
 classifiers = [
     "Programming Language :: Rust",
     "Programming Language :: Python :: Implementation :: CPython",
@@ -23,7 +23,7 @@ devel = [
     "mypy~=1.13.0",
     "ruff~=0.7.2",
     "pytest~=8.3",
-    "pytest-benchmark<5"
+    "pytest-benchmark~=5.1"
 ]
 
 [project.urls]
diff --git a/python/src/lib.rs b/python/src/lib.rs
index 9c4263e..7d948ac 100644
--- a/python/src/lib.rs
+++ b/python/src/lib.rs
@@ -201,6 +201,7 @@ impl FromIterator<PyAclEntry> for Vec<AclEntry> {
 #[pymethods]
 impl PyAclEntry {
     #[new]
+    #[pyo3(signature = (r#type, scope, permissions, name=None))]
     pub fn new(r#type: String, scope: String, permissions: String, name: Option<String>) -> Self {
         Self {
             r#type,
@@ -296,6 +297,7 @@ impl From<WriteOptions> for PyWriteOptions {
 #[pymethods]
 impl PyWriteOptions {
     #[new]
+    #[pyo3(signature = (block_size=None, replication=None, permission=None, overwrite=None, create_parent=None))]
     pub fn new(
         block_size: Option<u64>,
         replication: Option<u32>,
@@ -459,6 +461,7 @@ impl RawClient {
         Ok(py.allow_threads(|| self.rt.block_on(self.inner.set_times(path, mtime, atime)))?)
     }
 
+    #[pyo3(signature = (path, owner=None, group=None))]
     pub fn set_owner(
         &self,
         path: &str,
@@ -541,7 +544,7 @@ impl RawClient {
 
 /// A Python module implemented in Rust.
 #[pymodule]
-fn _internal(_py: Python, m: &PyModule) -> PyResult<()> {
+fn _internal(m: &Bound<'_, PyModule>) -> PyResult<()> {
     m.add_class::<RawClient>()?;
     m.add_class::<PyFileStatus>()?;
     m.add_class::<PyContentSummary>()?;
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index fd49e15..7c2ecb3 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -12,7 +12,7 @@ license = "Apache-2.0"
 
 [dependencies]
 aes = "0.8"
-base64 = "0.21"
+base64 = "0.22"
 bitflags = "2"
 bytes = { workspace = true }
 cbc = "0.1"
@@ -32,17 +32,17 @@ log = { workspace = true }
 md-5 = "0.10"
 num-traits = "0.2"
 once_cell = "1"
-prost = "0.12"
-prost-types = "0.12"
+prost = "0.13"
+prost-types = "0.13"
 rand = "0.8"
 regex = "1"
-roxmltree = "0.18"
+roxmltree = "0.20"
 socket2 = "0.5"
 thiserror = { workspace = true }
 tokio = { workspace = true, features = ["rt", "rt-multi-thread", "net", "io-util", "macros", "sync", "time"] }
 url = "2"
 uuid = { version = "1", features = ["v4"] }
-which = { version = "4", optional = true }
+which = { version = "7", optional = true }
 whoami = "1"
 
 [target.'cfg(unix)'.dependencies]
@@ -50,15 +50,15 @@ whoami = "1"
 fs-hdfs3 = { version = "0.1.12", optional = true }
 
 [build-dependencies]
-prost-build = { version = "0.12", optional = true }
-protobuf-src = { version = "1.1", optional = true }
+prost-build = { version = "0.13", optional = true }
+protobuf-src = { version = "2", optional = true }
 
 [dev-dependencies]
 criterion = { version = "0.5", features = ["async_tokio", "async_futures"] }
-env_logger = "0.10"
-serial_test = "2"
+env_logger = { workspace = true }
+serial_test = "3"
 tempfile = "3"
-which = "4"
+which = "7"
 
 [features]
 generate-protobuf = ["prost-build", "protobuf-src"]
diff --git a/rust/src/hdfs/block_reader.rs b/rust/src/hdfs/block_reader.rs
index be0549e..1063969 100644
--- a/rust/src/hdfs/block_reader.rs
+++ b/rust/src/hdfs/block_reader.rs
@@ -230,7 +230,7 @@ impl ReplicatedBlockStream {
         tokio::spawn(async move {
             loop {
                 let packet = connection.read_packet().await?;
-                let header = packet.header.clone();
+                let header = packet.header;
                 let data = packet.get_data(&checksum_info)?;
 
                 // If the packet is empty it means it's the last packet
diff --git a/rust/src/hdfs/connection.rs b/rust/src/hdfs/connection.rs
index 2005e14..926381f 100644
--- a/rust/src/hdfs/connection.rs
+++ b/rust/src/hdfs/connection.rs
@@ -479,7 +479,7 @@ impl Packet {
 
         self.header.data_len = data.len() as i32;
 
-        (self.header.clone(), checksum, data)
+        (self.header, checksum, data)
     }
 
     pub(crate) fn get_data(
diff --git a/rust/src/proto/hadoop.common.rs b/rust/src/proto/hadoop.common.rs
index d5ffbb2..3f16edf 100644
--- a/rust/src/proto/hadoop.common.rs
+++ b/rust/src/proto/hadoop.common.rs
@@ -1,6 +1,6 @@
+// This file is @generated by prost-build.
 /// *
 /// Security token identifier
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TokenProto {
     #[prost(bytes = "vec", required, tag = "1")]
@@ -12,7 +12,6 @@ pub struct TokenProto {
     #[prost(string, required, tag = "4")]
     pub service: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CredentialsKvProto {
     #[prost(string, required, tag = "1")]
@@ -22,7 +21,6 @@ pub struct CredentialsKvProto {
     #[prost(bytes = "vec", optional, tag = "3")]
     pub secret: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CredentialsProto {
     #[prost(message, repeated, tag = "1")]
@@ -30,103 +28,86 @@ pub struct CredentialsProto {
     #[prost(message, repeated, tag = "2")]
     pub secrets: ::prost::alloc::vec::Vec<CredentialsKvProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetDelegationTokenRequestProto {
     #[prost(string, required, tag = "1")]
     pub renewer: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetDelegationTokenResponseProto {
     #[prost(message, optional, tag = "1")]
     pub token: ::core::option::Option<TokenProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RenewDelegationTokenRequestProto {
     #[prost(message, required, tag = "1")]
     pub token: TokenProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RenewDelegationTokenResponseProto {
     #[prost(uint64, required, tag = "1")]
     pub new_expiry_time: u64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CancelDelegationTokenRequestProto {
     #[prost(message, required, tag = "1")]
     pub token: TokenProto,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CancelDelegationTokenResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct HaStateChangeRequestInfoProto {
     #[prost(enumeration = "HaRequestSource", required, tag = "1")]
     pub req_source: i32,
 }
 /// *
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MonitorHealthRequestProto {}
 /// *
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MonitorHealthResponseProto {}
 /// *
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct TransitionToActiveRequestProto {
     #[prost(message, required, tag = "1")]
     pub req_info: HaStateChangeRequestInfoProto,
 }
 /// *
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct TransitionToActiveResponseProto {}
 /// *
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct TransitionToStandbyRequestProto {
     #[prost(message, required, tag = "1")]
     pub req_info: HaStateChangeRequestInfoProto,
 }
 /// *
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct TransitionToStandbyResponseProto {}
 /// *
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct TransitionToObserverRequestProto {
     #[prost(message, required, tag = "1")]
     pub req_info: HaStateChangeRequestInfoProto,
 }
 /// *
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct TransitionToObserverResponseProto {}
 /// *
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetServiceStatusRequestProto {}
 /// *
 /// Returns the state of the service
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetServiceStatusResponseProto {
     #[prost(enumeration = "HaServiceStateProto", required, tag = "1")]
@@ -154,10 +135,10 @@ impl HaServiceStateProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            HaServiceStateProto::Initializing => "INITIALIZING",
-            HaServiceStateProto::Active => "ACTIVE",
-            HaServiceStateProto::Standby => "STANDBY",
-            HaServiceStateProto::Observer => "OBSERVER",
+            Self::Initializing => "INITIALIZING",
+            Self::Active => "ACTIVE",
+            Self::Standby => "STANDBY",
+            Self::Observer => "OBSERVER",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -185,9 +166,9 @@ impl HaRequestSource {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            HaRequestSource::RequestByUser => "REQUEST_BY_USER",
-            HaRequestSource::RequestByUserForced => "REQUEST_BY_USER_FORCED",
-            HaRequestSource::RequestByZkfc => "REQUEST_BY_ZKFC",
+            Self::RequestByUser => "REQUEST_BY_USER",
+            Self::RequestByUserForced => "REQUEST_BY_USER_FORCED",
+            Self::RequestByZkfc => "REQUEST_BY_ZKFC",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -206,7 +187,6 @@ impl HaRequestSource {
 /// (so we know the overarching trace this message is a part of), and
 /// the id of the current span when this message was sent, so we know
 /// what span caused the new span we will create when this message is received.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RpcTraceInfoProto {
     /// parentIdHigh
@@ -221,7 +201,6 @@ pub struct RpcTraceInfoProto {
 }
 /// *
 /// Used to pass through the call context entry after an RPC is made.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RpcCallerContextProto {
     #[prost(string, required, tag = "1")]
@@ -230,7 +209,6 @@ pub struct RpcCallerContextProto {
     pub signature: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
 }
 /// the header for the RpcRequest
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RpcRequestHeaderProto {
     #[prost(enumeration = "RpcKindProto", optional, tag = "1")]
@@ -268,17 +246,7 @@ pub struct RpcRequestHeaderProto {
 }
 /// Nested message and enum types in `RpcRequestHeaderProto`.
 pub mod rpc_request_header_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum OperationProto {
         /// The final RPC Packet
@@ -295,9 +263,9 @@ pub mod rpc_request_header_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                OperationProto::RpcFinalPacket => "RPC_FINAL_PACKET",
-                OperationProto::RpcContinuationPacket => "RPC_CONTINUATION_PACKET",
-                OperationProto::RpcCloseConnection => "RPC_CLOSE_CONNECTION",
+                Self::RpcFinalPacket => "RPC_FINAL_PACKET",
+                Self::RpcContinuationPacket => "RPC_CONTINUATION_PACKET",
+                Self::RpcCloseConnection => "RPC_CLOSE_CONNECTION",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -335,7 +303,6 @@ pub mod rpc_request_header_proto {
 /// RpcStastus - success or failure
 /// The reponseHeader's errDetail,  exceptionClassName and errMsg contains
 /// further details on the error
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RpcResponseHeaderProto {
     /// callId used in Request
@@ -379,17 +346,7 @@ pub struct RpcResponseHeaderProto {
 }
 /// Nested message and enum types in `RpcResponseHeaderProto`.
 pub mod rpc_response_header_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum RpcStatusProto {
         /// RPC succeeded
@@ -406,9 +363,9 @@ pub mod rpc_response_header_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                RpcStatusProto::Success => "SUCCESS",
-                RpcStatusProto::Error => "ERROR",
-                RpcStatusProto::Fatal => "FATAL",
+                Self::Success => "SUCCESS",
+                Self::Error => "ERROR",
+                Self::Fatal => "FATAL",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -421,17 +378,7 @@ pub mod rpc_response_header_proto {
             }
         }
     }
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum RpcErrorCodeProto {
         /// Non-fatal Rpc error - connection left open for future rpc calls
@@ -470,26 +417,18 @@ pub mod rpc_response_header_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                RpcErrorCodeProto::ErrorApplication => "ERROR_APPLICATION",
-                RpcErrorCodeProto::ErrorNoSuchMethod => "ERROR_NO_SUCH_METHOD",
-                RpcErrorCodeProto::ErrorNoSuchProtocol => "ERROR_NO_SUCH_PROTOCOL",
-                RpcErrorCodeProto::ErrorRpcServer => "ERROR_RPC_SERVER",
-                RpcErrorCodeProto::ErrorSerializingResponse => {
-                    "ERROR_SERIALIZING_RESPONSE"
-                }
-                RpcErrorCodeProto::ErrorRpcVersionMismatch => {
-                    "ERROR_RPC_VERSION_MISMATCH"
-                }
-                RpcErrorCodeProto::FatalUnknown => "FATAL_UNKNOWN",
-                RpcErrorCodeProto::FatalUnsupportedSerialization => {
-                    "FATAL_UNSUPPORTED_SERIALIZATION"
-                }
-                RpcErrorCodeProto::FatalInvalidRpcHeader => "FATAL_INVALID_RPC_HEADER",
-                RpcErrorCodeProto::FatalDeserializingRequest => {
-                    "FATAL_DESERIALIZING_REQUEST"
-                }
-                RpcErrorCodeProto::FatalVersionMismatch => "FATAL_VERSION_MISMATCH",
-                RpcErrorCodeProto::FatalUnauthorized => "FATAL_UNAUTHORIZED",
+                Self::ErrorApplication => "ERROR_APPLICATION",
+                Self::ErrorNoSuchMethod => "ERROR_NO_SUCH_METHOD",
+                Self::ErrorNoSuchProtocol => "ERROR_NO_SUCH_PROTOCOL",
+                Self::ErrorRpcServer => "ERROR_RPC_SERVER",
+                Self::ErrorSerializingResponse => "ERROR_SERIALIZING_RESPONSE",
+                Self::ErrorRpcVersionMismatch => "ERROR_RPC_VERSION_MISMATCH",
+                Self::FatalUnknown => "FATAL_UNKNOWN",
+                Self::FatalUnsupportedSerialization => "FATAL_UNSUPPORTED_SERIALIZATION",
+                Self::FatalInvalidRpcHeader => "FATAL_INVALID_RPC_HEADER",
+                Self::FatalDeserializingRequest => "FATAL_DESERIALIZING_REQUEST",
+                Self::FatalVersionMismatch => "FATAL_VERSION_MISMATCH",
+                Self::FatalUnauthorized => "FATAL_UNAUTHORIZED",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -502,9 +441,7 @@ pub mod rpc_response_header_proto {
                 "ERROR_SERIALIZING_RESPONSE" => Some(Self::ErrorSerializingResponse),
                 "ERROR_RPC_VERSION_MISMATCH" => Some(Self::ErrorRpcVersionMismatch),
                 "FATAL_UNKNOWN" => Some(Self::FatalUnknown),
-                "FATAL_UNSUPPORTED_SERIALIZATION" => {
-                    Some(Self::FatalUnsupportedSerialization)
-                }
+                "FATAL_UNSUPPORTED_SERIALIZATION" => Some(Self::FatalUnsupportedSerialization),
                 "FATAL_INVALID_RPC_HEADER" => Some(Self::FatalInvalidRpcHeader),
                 "FATAL_DESERIALIZING_REQUEST" => Some(Self::FatalDeserializingRequest),
                 "FATAL_VERSION_MISMATCH" => Some(Self::FatalVersionMismatch),
@@ -514,7 +451,6 @@ pub mod rpc_response_header_proto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RpcSaslProto {
     #[prost(uint32, optional, tag = "1")]
@@ -528,7 +464,6 @@ pub struct RpcSaslProto {
 }
 /// Nested message and enum types in `RpcSaslProto`.
 pub mod rpc_sasl_proto {
-    #[allow(clippy::derive_partial_eq_without_eq)]
     #[derive(Clone, PartialEq, ::prost::Message)]
     pub struct SaslAuth {
         #[prost(string, required, tag = "1")]
@@ -542,17 +477,7 @@ pub mod rpc_sasl_proto {
         #[prost(bytes = "vec", optional, tag = "5")]
         pub challenge: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
     }
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum SaslState {
         Success = 0,
@@ -569,12 +494,12 @@ pub mod rpc_sasl_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                SaslState::Success => "SUCCESS",
-                SaslState::Negotiate => "NEGOTIATE",
-                SaslState::Initiate => "INITIATE",
-                SaslState::Challenge => "CHALLENGE",
-                SaslState::Response => "RESPONSE",
-                SaslState::Wrap => "WRAP",
+                Self::Success => "SUCCESS",
+                Self::Negotiate => "NEGOTIATE",
+                Self::Initiate => "INITIATE",
+                Self::Challenge => "CHALLENGE",
+                Self::Response => "RESPONSE",
+                Self::Wrap => "WRAP",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -610,9 +535,9 @@ impl RpcKindProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            RpcKindProto::RpcBuiltin => "RPC_BUILTIN",
-            RpcKindProto::RpcWritable => "RPC_WRITABLE",
-            RpcKindProto::RpcProtocolBuffer => "RPC_PROTOCOL_BUFFER",
+            Self::RpcBuiltin => "RPC_BUILTIN",
+            Self::RpcWritable => "RPC_WRITABLE",
+            Self::RpcProtocolBuffer => "RPC_PROTOCOL_BUFFER",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -627,7 +552,6 @@ impl RpcKindProto {
 }
 /// *
 /// Spec for UserInformationProto is specified in ProtoUtil#makeIpcConnectionContext
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UserInformationProto {
     #[prost(string, optional, tag = "1")]
@@ -638,7 +562,6 @@ pub struct UserInformationProto {
 /// *
 /// The connection context is sent as part of the connection establishment.
 /// It establishes the context for ALL Rpc calls within the connection.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct IpcConnectionContextProto {
     /// UserInfo beyond what is determined as part of security handshake
@@ -657,7 +580,6 @@ pub struct IpcConnectionContextProto {
 ///
 /// No special header is needed for the Rpc Response for Protobuf Rpc Engine.
 /// The normal RPC response header (see RpcHeader.proto) are sufficient.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RequestHeaderProto {
     /// * Name of the RPC method
diff --git a/rust/src/proto/hadoop.hdfs.rs b/rust/src/proto/hadoop.hdfs.rs
index 9a7a092..a775a9b 100644
--- a/rust/src/proto/hadoop.hdfs.rs
+++ b/rust/src/proto/hadoop.hdfs.rs
@@ -1,18 +1,25 @@
+// This file is @generated by prost-build.
 /// *
 /// File or Directory permision - same spec as posix
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct FsPermissionProto {
     /// Actually a short - only 16bits used
     #[prost(uint32, required, tag = "1")]
     pub perm: u32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AclEntryProto {
-    #[prost(enumeration = "acl_entry_proto::AclEntryTypeProto", required, tag = "1")]
+    #[prost(
+        enumeration = "acl_entry_proto::AclEntryTypeProto",
+        required,
+        tag = "1"
+    )]
     pub r#type: i32,
-    #[prost(enumeration = "acl_entry_proto::AclEntryScopeProto", required, tag = "2")]
+    #[prost(
+        enumeration = "acl_entry_proto::AclEntryScopeProto",
+        required,
+        tag = "2"
+    )]
     pub scope: i32,
     #[prost(enumeration = "acl_entry_proto::FsActionProto", required, tag = "3")]
     pub permissions: i32,
@@ -21,17 +28,7 @@ pub struct AclEntryProto {
 }
 /// Nested message and enum types in `AclEntryProto`.
 pub mod acl_entry_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum AclEntryScopeProto {
         Access = 0,
@@ -44,8 +41,8 @@ pub mod acl_entry_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                AclEntryScopeProto::Access => "ACCESS",
-                AclEntryScopeProto::Default => "DEFAULT",
+                Self::Access => "ACCESS",
+                Self::Default => "DEFAULT",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -57,17 +54,7 @@ pub mod acl_entry_proto {
             }
         }
     }
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum AclEntryTypeProto {
         User = 0,
@@ -82,10 +69,10 @@ pub mod acl_entry_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                AclEntryTypeProto::User => "USER",
-                AclEntryTypeProto::Group => "GROUP",
-                AclEntryTypeProto::Mask => "MASK",
-                AclEntryTypeProto::Other => "OTHER",
+                Self::User => "USER",
+                Self::Group => "GROUP",
+                Self::Mask => "MASK",
+                Self::Other => "OTHER",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -99,17 +86,7 @@ pub mod acl_entry_proto {
             }
         }
     }
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum FsActionProto {
         None = 0,
@@ -128,14 +105,14 @@ pub mod acl_entry_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                FsActionProto::None => "NONE",
-                FsActionProto::Execute => "EXECUTE",
-                FsActionProto::Write => "WRITE",
-                FsActionProto::WriteExecute => "WRITE_EXECUTE",
-                FsActionProto::Read => "READ",
-                FsActionProto::ReadExecute => "READ_EXECUTE",
-                FsActionProto::ReadWrite => "READ_WRITE",
-                FsActionProto::PermAll => "PERM_ALL",
+                Self::None => "NONE",
+                Self::Execute => "EXECUTE",
+                Self::Write => "WRITE",
+                Self::WriteExecute => "WRITE_EXECUTE",
+                Self::Read => "READ",
+                Self::ReadExecute => "READ_EXECUTE",
+                Self::ReadWrite => "READ_WRITE",
+                Self::PermAll => "PERM_ALL",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -154,7 +131,6 @@ pub mod acl_entry_proto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AclStatusProto {
     #[prost(string, required, tag = "1")]
@@ -168,7 +144,6 @@ pub struct AclStatusProto {
     #[prost(message, optional, tag = "5")]
     pub permission: ::core::option::Option<FsPermissionProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModifyAclEntriesRequestProto {
     #[prost(string, required, tag = "1")]
@@ -176,19 +151,15 @@ pub struct ModifyAclEntriesRequestProto {
     #[prost(message, repeated, tag = "2")]
     pub acl_spec: ::prost::alloc::vec::Vec<AclEntryProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ModifyAclEntriesResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RemoveAclRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveAclResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RemoveAclEntriesRequestProto {
     #[prost(string, required, tag = "1")]
@@ -196,19 +167,15 @@ pub struct RemoveAclEntriesRequestProto {
     #[prost(message, repeated, tag = "2")]
     pub acl_spec: ::prost::alloc::vec::Vec<AclEntryProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveAclEntriesResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RemoveDefaultAclRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveDefaultAclResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetAclRequestProto {
     #[prost(string, required, tag = "1")]
@@ -216,16 +183,13 @@ pub struct SetAclRequestProto {
     #[prost(message, repeated, tag = "2")]
     pub acl_spec: ::prost::alloc::vec::Vec<AclEntryProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetAclResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetAclStatusRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetAclStatusResponseProto {
     #[prost(message, required, tag = "1")]
@@ -233,7 +197,6 @@ pub struct GetAclStatusResponseProto {
 }
 /// *
 /// Extended block idenfies a block
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ExtendedBlockProto {
     /// Block pool id - globally unique across clusters
@@ -248,7 +211,6 @@ pub struct ExtendedBlockProto {
     #[prost(uint64, optional, tag = "4", default = "0")]
     pub num_bytes: ::core::option::Option<u64>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ProvidedStorageLocationProto {
     #[prost(string, required, tag = "1")]
@@ -262,7 +224,6 @@ pub struct ProvidedStorageLocationProto {
 }
 /// *
 /// Identifies a Datanode
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DatanodeIdProto {
     /// IP address
@@ -293,7 +254,6 @@ pub struct DatanodeIdProto {
 }
 /// *
 /// Datanode local information
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DatanodeLocalInfoProto {
     #[prost(string, required, tag = "1")]
@@ -305,7 +265,6 @@ pub struct DatanodeLocalInfoProto {
 }
 /// *
 /// Datanode volume information
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DatanodeVolumeInfoProto {
     #[prost(string, required, tag = "1")]
@@ -325,7 +284,6 @@ pub struct DatanodeVolumeInfoProto {
 }
 /// *
 /// DatanodeInfo array
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DatanodeInfosProto {
     #[prost(message, repeated, tag = "1")]
@@ -333,7 +291,6 @@ pub struct DatanodeInfosProto {
 }
 /// *
 /// The status of a Datanode
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DatanodeInfoProto {
     #[prost(message, required, tag = "1")]
@@ -378,17 +335,7 @@ pub struct DatanodeInfoProto {
 }
 /// Nested message and enum types in `DatanodeInfoProto`.
 pub mod datanode_info_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum AdminState {
         Normal = 0,
@@ -404,11 +351,11 @@ pub mod datanode_info_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                AdminState::Normal => "NORMAL",
-                AdminState::DecommissionInprogress => "DECOMMISSION_INPROGRESS",
-                AdminState::Decommissioned => "DECOMMISSIONED",
-                AdminState::EnteringMaintenance => "ENTERING_MAINTENANCE",
-                AdminState::InMaintenance => "IN_MAINTENANCE",
+                Self::Normal => "NORMAL",
+                Self::DecommissionInprogress => "DECOMMISSION_INPROGRESS",
+                Self::Decommissioned => "DECOMMISSIONED",
+                Self::EnteringMaintenance => "ENTERING_MAINTENANCE",
+                Self::InMaintenance => "IN_MAINTENANCE",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -426,7 +373,6 @@ pub mod datanode_info_proto {
 }
 /// *
 /// Represents a storage available on the datanode
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DatanodeStorageProto {
     #[prost(string, required, tag = "1")]
@@ -438,22 +384,17 @@ pub struct DatanodeStorageProto {
         default = "Normal"
     )]
     pub state: ::core::option::Option<i32>,
-    #[prost(enumeration = "StorageTypeProto", optional, tag = "3", default = "Disk")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        optional,
+        tag = "3",
+        default = "Disk"
+    )]
     pub storage_type: ::core::option::Option<i32>,
 }
 /// Nested message and enum types in `DatanodeStorageProto`.
 pub mod datanode_storage_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum StorageState {
         Normal = 0,
@@ -466,8 +407,8 @@ pub mod datanode_storage_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                StorageState::Normal => "NORMAL",
-                StorageState::ReadOnlyShared => "READ_ONLY_SHARED",
+                Self::Normal => "NORMAL",
+                Self::ReadOnlyShared => "READ_ONLY_SHARED",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -480,7 +421,6 @@ pub mod datanode_storage_proto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StorageReportProto {
     #[deprecated]
@@ -506,7 +446,6 @@ pub struct StorageReportProto {
 }
 /// *
 /// Summary of a file or directory
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ContentSummaryProto {
     #[prost(uint64, required, tag = "1")]
@@ -536,7 +475,6 @@ pub struct ContentSummaryProto {
 }
 /// *
 /// Summary of quota usage of a directory
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct QuotaUsageProto {
     #[prost(uint64, required, tag = "1")]
@@ -552,16 +490,19 @@ pub struct QuotaUsageProto {
 }
 /// *
 /// Storage type quota and usage information of a file or directory
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StorageTypeQuotaInfosProto {
     #[prost(message, repeated, tag = "1")]
     pub type_quota_info: ::prost::alloc::vec::Vec<StorageTypeQuotaInfoProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct StorageTypeQuotaInfoProto {
-    #[prost(enumeration = "StorageTypeProto", optional, tag = "1", default = "Disk")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        optional,
+        tag = "1",
+        default = "Disk"
+    )]
     pub r#type: ::core::option::Option<i32>,
     #[prost(uint64, required, tag = "2")]
     pub quota: u64,
@@ -572,7 +513,6 @@ pub struct StorageTypeQuotaInfoProto {
 /// Contains a list of paths corresponding to corrupt files and a cookie
 /// used for iterative calls to NameNode.listCorruptFileBlocks.
 ///
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CorruptFileBlocksProto {
     #[prost(string, repeated, tag = "1")]
@@ -582,15 +522,18 @@ pub struct CorruptFileBlocksProto {
 }
 /// *
 /// A list of storage types.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StorageTypesProto {
-    #[prost(enumeration = "StorageTypeProto", repeated, packed = "false", tag = "1")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        repeated,
+        packed = "false",
+        tag = "1"
+    )]
     pub storage_types: ::prost::alloc::vec::Vec<i32>,
 }
 /// *
 /// Block replica storage policy.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BlockStoragePolicyProto {
     #[prost(uint32, required, tag = "1")]
@@ -609,7 +552,6 @@ pub struct BlockStoragePolicyProto {
 }
 /// *
 /// A LocatedBlock gives information about a block and its location.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct LocatedBlockProto {
     #[prost(message, required, tag = "1")]
@@ -628,7 +570,12 @@ pub struct LocatedBlockProto {
     /// if a location in locs is cached
     #[prost(bool, repeated, tag = "6")]
     pub is_cached: ::prost::alloc::vec::Vec<bool>,
-    #[prost(enumeration = "StorageTypeProto", repeated, packed = "false", tag = "7")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        repeated,
+        packed = "false",
+        tag = "7"
+    )]
     pub storage_types: ::prost::alloc::vec::Vec<i32>,
     #[prost(string, repeated, tag = "8")]
     pub storage_i_ds: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
@@ -641,7 +588,6 @@ pub struct LocatedBlockProto {
     #[prost(message, repeated, tag = "10")]
     pub block_tokens: ::prost::alloc::vec::Vec<super::common::TokenProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BatchedListingKeyProto {
     #[prost(bytes = "vec", required, tag = "1")]
@@ -651,7 +597,6 @@ pub struct BatchedListingKeyProto {
     #[prost(bytes = "vec", required, tag = "3")]
     pub start_after: ::prost::alloc::vec::Vec<u8>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DataEncryptionKeyProto {
     #[prost(uint32, required, tag = "1")]
@@ -669,7 +614,6 @@ pub struct DataEncryptionKeyProto {
 }
 /// *
 /// Encryption information for a file.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct FileEncryptionInfoProto {
     #[prost(enumeration = "CipherSuiteProto", required, tag = "1")]
@@ -688,7 +632,6 @@ pub struct FileEncryptionInfoProto {
 /// *
 /// Encryption information for an individual
 /// file within an encryption zone
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PerFileEncryptionInfoProto {
     #[prost(bytes = "vec", required, tag = "1")]
@@ -701,7 +644,6 @@ pub struct PerFileEncryptionInfoProto {
 /// *
 /// Encryption information for an encryption
 /// zone
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ZoneEncryptionInfoProto {
     #[prost(enumeration = "CipherSuiteProto", required, tag = "1")]
@@ -715,7 +657,6 @@ pub struct ZoneEncryptionInfoProto {
 }
 /// *
 /// Re-encryption information for an encryption zone
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ReencryptionInfoProto {
     #[prost(string, required, tag = "1")]
@@ -735,7 +676,6 @@ pub struct ReencryptionInfoProto {
 }
 /// *
 /// Cipher option
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CipherOptionProto {
     #[prost(enumeration = "CipherSuiteProto", required, tag = "1")]
@@ -751,7 +691,6 @@ pub struct CipherOptionProto {
 }
 /// *
 /// A set of file blocks and their locations.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct LocatedBlocksProto {
     #[prost(uint64, required, tag = "1")]
@@ -772,7 +711,6 @@ pub struct LocatedBlocksProto {
 }
 /// *
 /// ECSchema options entry
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EcSchemaOptionEntryProto {
     #[prost(string, required, tag = "1")]
@@ -782,7 +720,6 @@ pub struct EcSchemaOptionEntryProto {
 }
 /// *
 /// ECSchema for erasurecoding
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EcSchemaProto {
     #[prost(string, required, tag = "1")]
@@ -794,7 +731,6 @@ pub struct EcSchemaProto {
     #[prost(message, repeated, tag = "4")]
     pub options: ::prost::alloc::vec::Vec<EcSchemaOptionEntryProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ErasureCodingPolicyProto {
     #[prost(string, optional, tag = "1")]
@@ -814,7 +750,6 @@ pub struct ErasureCodingPolicyProto {
     )]
     pub state: ::core::option::Option<i32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddErasureCodingPolicyResponseProto {
     #[prost(message, required, tag = "1")]
@@ -824,7 +759,6 @@ pub struct AddErasureCodingPolicyResponseProto {
     #[prost(string, optional, tag = "3")]
     pub error_msg: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EcTopologyVerifierResultProto {
     #[prost(string, required, tag = "1")]
@@ -834,7 +768,6 @@ pub struct EcTopologyVerifierResultProto {
 }
 /// *
 /// Placeholder type for consistent HDFS operations.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct HdfsPathHandleProto {
     #[prost(uint64, optional, tag = "1")]
@@ -847,7 +780,6 @@ pub struct HdfsPathHandleProto {
 /// *
 /// Status of a file, directory or symlink
 /// Optionally includes a file's block locations if requested by client on the rpc call.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct HdfsFileStatusProto {
     #[prost(enumeration = "hdfs_file_status_proto::FileType", required, tag = "1")]
@@ -906,17 +838,7 @@ pub struct HdfsFileStatusProto {
 }
 /// Nested message and enum types in `HdfsFileStatusProto`.
 pub mod hdfs_file_status_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum FileType {
         IsDir = 1,
@@ -930,9 +852,9 @@ pub mod hdfs_file_status_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                FileType::IsDir => "IS_DIR",
-                FileType::IsFile => "IS_FILE",
-                FileType::IsSymlink => "IS_SYMLINK",
+                Self::IsDir => "IS_DIR",
+                Self::IsFile => "IS_FILE",
+                Self::IsSymlink => "IS_SYMLINK",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -945,17 +867,7 @@ pub mod hdfs_file_status_proto {
             }
         }
     }
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum Flags {
         /// has ACLs
@@ -974,10 +886,10 @@ pub mod hdfs_file_status_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                Flags::HasAcl => "HAS_ACL",
-                Flags::HasCrypt => "HAS_CRYPT",
-                Flags::HasEc => "HAS_EC",
-                Flags::SnapshotEnabled => "SNAPSHOT_ENABLED",
+                Self::HasAcl => "HAS_ACL",
+                Self::HasCrypt => "HAS_CRYPT",
+                Self::HasEc => "HAS_EC",
+                Self::SnapshotEnabled => "SNAPSHOT_ENABLED",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -997,8 +909,7 @@ pub mod hdfs_file_status_proto {
 /// lower-level chunk checksums/CRCs.
 /// These options should be kept in sync with
 /// org.apache.hadoop.hdfs.protocol.BlockChecksumOptions.
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct BlockChecksumOptionsProto {
     #[prost(
         enumeration = "BlockChecksumTypeProto",
@@ -1016,7 +927,6 @@ pub struct BlockChecksumOptionsProto {
 }
 /// *
 /// HDFS Server Defaults
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct FsServerDefaultsProto {
     #[prost(uint64, required, tag = "1")]
@@ -1050,7 +960,6 @@ pub struct FsServerDefaultsProto {
 }
 /// *
 /// Directory listing
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DirectoryListingProto {
     #[prost(message, repeated, tag = "1")]
@@ -1058,7 +967,6 @@ pub struct DirectoryListingProto {
     #[prost(uint32, required, tag = "2")]
     pub remaining_entries: u32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RemoteExceptionProto {
     #[prost(string, required, tag = "1")]
@@ -1067,7 +975,6 @@ pub struct RemoteExceptionProto {
     pub message: ::core::option::Option<::prost::alloc::string::String>,
 }
 /// Directory listing result for a batched listing call.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BatchedDirectoryListingProto {
     #[prost(message, repeated, tag = "1")]
@@ -1081,7 +988,6 @@ pub struct BatchedDirectoryListingProto {
 /// Status of a snapshottable directory: besides the normal information for
 /// a directory status, also include snapshot quota, number of snapshots, and
 /// the full path of the parent directory.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshottableDirectoryStatusProto {
     #[prost(message, required, tag = "1")]
@@ -1098,7 +1004,6 @@ pub struct SnapshottableDirectoryStatusProto {
 /// Status of a snapshot directory: besides the normal information for
 /// a directory status, also include snapshot ID, and
 /// the full path of the parent directory.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotStatusProto {
     #[prost(message, required, tag = "1")]
@@ -1113,17 +1018,13 @@ pub struct SnapshotStatusProto {
 }
 /// *
 /// Snapshottable directory listing
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshottableDirectoryListingProto {
     #[prost(message, repeated, tag = "1")]
-    pub snapshottable_dir_listing: ::prost::alloc::vec::Vec<
-        SnapshottableDirectoryStatusProto,
-    >,
+    pub snapshottable_dir_listing: ::prost::alloc::vec::Vec<SnapshottableDirectoryStatusProto>,
 }
 /// *
 /// Snapshot listing
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotListingProto {
     #[prost(message, repeated, tag = "1")]
@@ -1131,7 +1032,6 @@ pub struct SnapshotListingProto {
 }
 /// *
 /// Snapshot diff report entry
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotDiffReportEntryProto {
     #[prost(bytes = "vec", required, tag = "1")]
@@ -1143,7 +1043,6 @@ pub struct SnapshotDiffReportEntryProto {
 }
 /// *
 /// Snapshot diff report
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotDiffReportProto {
     /// full path of the directory where snapshots were taken
@@ -1158,7 +1057,6 @@ pub struct SnapshotDiffReportProto {
 }
 /// *
 /// Snapshot diff report listing entry
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotDiffReportListingEntryProto {
     #[prost(bytes = "vec", required, tag = "1")]
@@ -1172,7 +1070,6 @@ pub struct SnapshotDiffReportListingEntryProto {
     #[prost(uint64, optional, tag = "5")]
     pub file_id: ::core::option::Option<u64>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotDiffReportCursorProto {
     #[prost(bytes = "vec", required, tag = "1")]
@@ -1182,7 +1079,6 @@ pub struct SnapshotDiffReportCursorProto {
 }
 /// *
 /// Snapshot diff report listing
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotDiffReportListingProto {
     /// full path of the directory where snapshots were taken
@@ -1205,8 +1101,7 @@ pub struct SnapshotDiffReportListingProto {
 /// We restrict the max # of blocks per file
 /// (dfs.namenode.fs-limits.max-blocks-per-file), but it's better
 /// to avoid changing this.
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct BlockProto {
     #[prost(uint64, required, tag = "1")]
     pub block_id: u64,
@@ -1218,7 +1113,6 @@ pub struct BlockProto {
 /// *
 /// Information related to a snapshot
 /// TODO: add more information
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SnapshotInfoProto {
     #[prost(string, required, tag = "1")]
@@ -1237,7 +1131,6 @@ pub struct SnapshotInfoProto {
 }
 /// *
 /// Rolling upgrade status
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RollingUpgradeStatusProto {
     #[prost(string, required, tag = "1")]
@@ -1247,7 +1140,6 @@ pub struct RollingUpgradeStatusProto {
 }
 /// *
 /// A list of storage IDs.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct StorageUuidsProto {
     #[prost(string, repeated, tag = "1")]
@@ -1266,7 +1158,6 @@ pub struct StorageUuidsProto {
 /// protobuf tokens, the the first field sent must have a `field_number` less
 /// than 16 to make sure that the first byte is positive. Otherwise it could be
 /// parsed as a legacy token. See HDFS-11026 for more discussion.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BlockTokenSecretProto {
     #[prost(uint64, optional, tag = "1")]
@@ -1281,7 +1172,12 @@ pub struct BlockTokenSecretProto {
     pub block_id: ::core::option::Option<u64>,
     #[prost(enumeration = "AccessModeProto", repeated, packed = "false", tag = "6")]
     pub modes: ::prost::alloc::vec::Vec<i32>,
-    #[prost(enumeration = "StorageTypeProto", repeated, packed = "false", tag = "7")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        repeated,
+        packed = "false",
+        tag = "7"
+    )]
     pub storage_types: ::prost::alloc::vec::Vec<i32>,
     #[prost(string, repeated, tag = "8")]
     pub storage_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
@@ -1292,15 +1188,11 @@ pub struct BlockTokenSecretProto {
 /// Clients should receive this message in RPC responses and forward it
 /// in RPC requests without interpreting it. It should be encoded
 /// as an obscure byte array when being sent to clients.
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RouterFederatedStateProto {
     /// Last seen state IDs for multiple namespaces.
     #[prost(map = "string, int64", tag = "1")]
-    pub namespace_state_ids: ::std::collections::HashMap<
-        ::prost::alloc::string::String,
-        i64,
-    >,
+    pub namespace_state_ids: ::std::collections::HashMap<::prost::alloc::string::String, i64>,
 }
 /// *
 /// Types of recognized storage media.
@@ -1321,12 +1213,12 @@ impl StorageTypeProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            StorageTypeProto::Disk => "DISK",
-            StorageTypeProto::Ssd => "SSD",
-            StorageTypeProto::Archive => "ARCHIVE",
-            StorageTypeProto::RamDisk => "RAM_DISK",
-            StorageTypeProto::Provided => "PROVIDED",
-            StorageTypeProto::Nvdimm => "NVDIMM",
+            Self::Disk => "DISK",
+            Self::Ssd => "SSD",
+            Self::Archive => "ARCHIVE",
+            Self::RamDisk => "RAM_DISK",
+            Self::Provided => "PROVIDED",
+            Self::Nvdimm => "NVDIMM",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1357,8 +1249,8 @@ impl BlockTypeProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            BlockTypeProto::Contiguous => "CONTIGUOUS",
-            BlockTypeProto::Striped => "STRIPED",
+            Self::Contiguous => "CONTIGUOUS",
+            Self::Striped => "STRIPED",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1386,9 +1278,9 @@ impl CipherSuiteProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            CipherSuiteProto::Unknown => "UNKNOWN",
-            CipherSuiteProto::AesCtrNopadding => "AES_CTR_NOPADDING",
-            CipherSuiteProto::Sm4CtrNopadding => "SM4_CTR_NOPADDING",
+            Self::Unknown => "UNKNOWN",
+            Self::AesCtrNopadding => "AES_CTR_NOPADDING",
+            Self::Sm4CtrNopadding => "SM4_CTR_NOPADDING",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1416,10 +1308,8 @@ impl CryptoProtocolVersionProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            CryptoProtocolVersionProto::UnknownProtocolVersion => {
-                "UNKNOWN_PROTOCOL_VERSION"
-            }
-            CryptoProtocolVersionProto::EncryptionZones => "ENCRYPTION_ZONES",
+            Self::UnknownProtocolVersion => "UNKNOWN_PROTOCOL_VERSION",
+            Self::EncryptionZones => "ENCRYPTION_ZONES",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1447,9 +1337,9 @@ impl ErasureCodingPolicyState {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            ErasureCodingPolicyState::Disabled => "DISABLED",
-            ErasureCodingPolicyState::Enabled => "ENABLED",
-            ErasureCodingPolicyState::Removed => "REMOVED",
+            Self::Disabled => "DISABLED",
+            Self::Enabled => "ENABLED",
+            Self::Removed => "REMOVED",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1480,9 +1370,9 @@ impl ChecksumTypeProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            ChecksumTypeProto::ChecksumNull => "CHECKSUM_NULL",
-            ChecksumTypeProto::ChecksumCrc32 => "CHECKSUM_CRC32",
-            ChecksumTypeProto::ChecksumCrc32c => "CHECKSUM_CRC32C",
+            Self::ChecksumNull => "CHECKSUM_NULL",
+            Self::ChecksumCrc32 => "CHECKSUM_CRC32",
+            Self::ChecksumCrc32c => "CHECKSUM_CRC32C",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1510,8 +1400,8 @@ impl BlockChecksumTypeProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            BlockChecksumTypeProto::Md5crc => "MD5CRC",
-            BlockChecksumTypeProto::CompositeCrc => "COMPOSITE_CRC",
+            Self::Md5crc => "MD5CRC",
+            Self::CompositeCrc => "COMPOSITE_CRC",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1540,10 +1430,10 @@ impl AccessModeProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            AccessModeProto::Read => "READ",
-            AccessModeProto::Write => "WRITE",
-            AccessModeProto::Copy => "COPY",
-            AccessModeProto::Replace => "REPLACE",
+            Self::Read => "READ",
+            Self::Write => "WRITE",
+            Self::Copy => "COPY",
+            Self::Replace => "REPLACE",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1557,7 +1447,6 @@ impl AccessModeProto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct XAttrProto {
     #[prost(enumeration = "x_attr_proto::XAttrNamespaceProto", required, tag = "1")]
@@ -1569,17 +1458,7 @@ pub struct XAttrProto {
 }
 /// Nested message and enum types in `XAttrProto`.
 pub mod x_attr_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum XAttrNamespaceProto {
         User = 0,
@@ -1595,11 +1474,11 @@ pub mod x_attr_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                XAttrNamespaceProto::User => "USER",
-                XAttrNamespaceProto::Trusted => "TRUSTED",
-                XAttrNamespaceProto::Security => "SECURITY",
-                XAttrNamespaceProto::System => "SYSTEM",
-                XAttrNamespaceProto::Raw => "RAW",
+                Self::User => "USER",
+                Self::Trusted => "TRUSTED",
+                Self::Security => "SECURITY",
+                Self::System => "SYSTEM",
+                Self::Raw => "RAW",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1615,7 +1494,6 @@ pub mod x_attr_proto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetXAttrRequestProto {
     #[prost(string, required, tag = "1")]
@@ -1626,10 +1504,8 @@ pub struct SetXAttrRequestProto {
     #[prost(uint32, optional, tag = "3")]
     pub flag: ::core::option::Option<u32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetXAttrResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetXAttrsRequestProto {
     #[prost(string, required, tag = "1")]
@@ -1637,25 +1513,21 @@ pub struct GetXAttrsRequestProto {
     #[prost(message, repeated, tag = "2")]
     pub x_attrs: ::prost::alloc::vec::Vec<XAttrProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetXAttrsResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub x_attrs: ::prost::alloc::vec::Vec<XAttrProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListXAttrsRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListXAttrsResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub x_attrs: ::prost::alloc::vec::Vec<XAttrProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RemoveXAttrRequestProto {
     #[prost(string, required, tag = "1")]
@@ -1663,8 +1535,7 @@ pub struct RemoveXAttrRequestProto {
     #[prost(message, optional, tag = "2")]
     pub x_attr: ::core::option::Option<XAttrProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveXAttrResponseProto {}
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
 #[repr(i32)]
@@ -1679,8 +1550,8 @@ impl XAttrSetFlagProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            XAttrSetFlagProto::XattrCreate => "XATTR_CREATE",
-            XAttrSetFlagProto::XattrReplace => "XATTR_REPLACE",
+            Self::XattrCreate => "XATTR_CREATE",
+            Self::XattrReplace => "XATTR_REPLACE",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1692,7 +1563,6 @@ impl XAttrSetFlagProto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CreateEncryptionZoneRequestProto {
     #[prost(string, required, tag = "1")]
@@ -1700,16 +1570,13 @@ pub struct CreateEncryptionZoneRequestProto {
     #[prost(string, optional, tag = "2")]
     pub key_name: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CreateEncryptionZoneResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ListEncryptionZonesRequestProto {
     #[prost(int64, required, tag = "1")]
     pub id: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EncryptionZoneProto {
     #[prost(int64, required, tag = "1")]
@@ -1723,7 +1590,6 @@ pub struct EncryptionZoneProto {
     #[prost(string, required, tag = "5")]
     pub key_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListEncryptionZonesResponseProto {
     #[prost(message, repeated, tag = "1")]
@@ -1731,7 +1597,6 @@ pub struct ListEncryptionZonesResponseProto {
     #[prost(bool, required, tag = "2")]
     pub has_more: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ReencryptEncryptionZoneRequestProto {
     #[prost(enumeration = "ReencryptActionProto", required, tag = "1")]
@@ -1739,16 +1604,13 @@ pub struct ReencryptEncryptionZoneRequestProto {
     #[prost(string, required, tag = "2")]
     pub zone: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ReencryptEncryptionZoneResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ListReencryptionStatusRequestProto {
     #[prost(int64, required, tag = "1")]
     pub id: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ZoneReencryptionStatusProto {
     #[prost(int64, required, tag = "1")]
@@ -1772,7 +1634,6 @@ pub struct ZoneReencryptionStatusProto {
     #[prost(string, optional, tag = "10")]
     pub last_file: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListReencryptionStatusResponseProto {
     #[prost(message, repeated, tag = "1")]
@@ -1780,13 +1641,11 @@ pub struct ListReencryptionStatusResponseProto {
     #[prost(bool, required, tag = "2")]
     pub has_more: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetEzForPathRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetEzForPathResponseProto {
     #[prost(message, optional, tag = "1")]
@@ -1805,8 +1664,8 @@ impl ReencryptActionProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            ReencryptActionProto::CancelReencrypt => "CANCEL_REENCRYPT",
-            ReencryptActionProto::StartReencrypt => "START_REENCRYPT",
+            Self::CancelReencrypt => "CANCEL_REENCRYPT",
+            Self::StartReencrypt => "START_REENCRYPT",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1832,9 +1691,9 @@ impl ReencryptionStateProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            ReencryptionStateProto::Submitted => "SUBMITTED",
-            ReencryptionStateProto::Processing => "PROCESSING",
-            ReencryptionStateProto::Completed => "COMPLETED",
+            Self::Submitted => "SUBMITTED",
+            Self::Processing => "PROCESSING",
+            Self::Completed => "COMPLETED",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -1847,7 +1706,6 @@ impl ReencryptionStateProto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventProto {
     #[prost(enumeration = "EventType", required, tag = "1")]
@@ -1855,7 +1713,6 @@ pub struct EventProto {
     #[prost(bytes = "vec", required, tag = "2")]
     pub contents: ::prost::alloc::vec::Vec<u8>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventBatchProto {
     #[prost(int64, required, tag = "1")]
@@ -1863,7 +1720,6 @@ pub struct EventBatchProto {
     #[prost(message, repeated, tag = "2")]
     pub events: ::prost::alloc::vec::Vec<EventProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CreateEventProto {
     #[prost(enumeration = "INodeType", required, tag = "1")]
@@ -1889,7 +1745,6 @@ pub struct CreateEventProto {
     #[prost(bool, optional, tag = "11")]
     pub erasure_coded: ::core::option::Option<bool>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CloseEventProto {
     #[prost(string, required, tag = "1")]
@@ -1899,7 +1754,6 @@ pub struct CloseEventProto {
     #[prost(int64, required, tag = "3")]
     pub timestamp: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TruncateEventProto {
     #[prost(string, required, tag = "1")]
@@ -1909,7 +1763,6 @@ pub struct TruncateEventProto {
     #[prost(int64, required, tag = "3")]
     pub timestamp: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AppendEventProto {
     #[prost(string, required, tag = "1")]
@@ -1917,7 +1770,6 @@ pub struct AppendEventProto {
     #[prost(bool, optional, tag = "2", default = "false")]
     pub new_block: ::core::option::Option<bool>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RenameEventProto {
     #[prost(string, required, tag = "1")]
@@ -1927,7 +1779,6 @@ pub struct RenameEventProto {
     #[prost(int64, required, tag = "3")]
     pub timestamp: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MetadataUpdateEventProto {
     #[prost(string, required, tag = "1")]
@@ -1953,7 +1804,6 @@ pub struct MetadataUpdateEventProto {
     #[prost(bool, optional, tag = "11")]
     pub x_attrs_removed: ::core::option::Option<bool>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UnlinkEventProto {
     #[prost(string, required, tag = "1")]
@@ -1961,7 +1811,6 @@ pub struct UnlinkEventProto {
     #[prost(int64, required, tag = "2")]
     pub timestamp: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EventsListProto {
     /// deprecated
@@ -1994,13 +1843,13 @@ impl EventType {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            EventType::EventCreate => "EVENT_CREATE",
-            EventType::EventClose => "EVENT_CLOSE",
-            EventType::EventAppend => "EVENT_APPEND",
-            EventType::EventRename => "EVENT_RENAME",
-            EventType::EventMetadata => "EVENT_METADATA",
-            EventType::EventUnlink => "EVENT_UNLINK",
-            EventType::EventTruncate => "EVENT_TRUNCATE",
+            Self::EventCreate => "EVENT_CREATE",
+            Self::EventClose => "EVENT_CLOSE",
+            Self::EventAppend => "EVENT_APPEND",
+            Self::EventRename => "EVENT_RENAME",
+            Self::EventMetadata => "EVENT_METADATA",
+            Self::EventUnlink => "EVENT_UNLINK",
+            Self::EventTruncate => "EVENT_TRUNCATE",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -2031,9 +1880,9 @@ impl INodeType {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            INodeType::ITypeFile => "I_TYPE_FILE",
-            INodeType::ITypeDirectory => "I_TYPE_DIRECTORY",
-            INodeType::ITypeSymlink => "I_TYPE_SYMLINK",
+            Self::ITypeFile => "I_TYPE_FILE",
+            Self::ITypeDirectory => "I_TYPE_DIRECTORY",
+            Self::ITypeSymlink => "I_TYPE_SYMLINK",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -2063,12 +1912,12 @@ impl MetadataUpdateType {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            MetadataUpdateType::MetaTypeTimes => "META_TYPE_TIMES",
-            MetadataUpdateType::MetaTypeReplication => "META_TYPE_REPLICATION",
-            MetadataUpdateType::MetaTypeOwner => "META_TYPE_OWNER",
-            MetadataUpdateType::MetaTypePerms => "META_TYPE_PERMS",
-            MetadataUpdateType::MetaTypeAcls => "META_TYPE_ACLS",
-            MetadataUpdateType::MetaTypeXattrs => "META_TYPE_XATTRS",
+            Self::MetaTypeTimes => "META_TYPE_TIMES",
+            Self::MetaTypeReplication => "META_TYPE_REPLICATION",
+            Self::MetaTypeOwner => "META_TYPE_OWNER",
+            Self::MetaTypePerms => "META_TYPE_PERMS",
+            Self::MetaTypeAcls => "META_TYPE_ACLS",
+            Self::MetaTypeXattrs => "META_TYPE_XATTRS",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -2084,7 +1933,6 @@ impl MetadataUpdateType {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetErasureCodingPolicyRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2092,97 +1940,78 @@ pub struct SetErasureCodingPolicyRequestProto {
     #[prost(string, optional, tag = "2")]
     pub ec_policy_name: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetErasureCodingPolicyResponseProto {}
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetErasureCodingPoliciesRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetErasureCodingPoliciesResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub ec_policies: ::prost::alloc::vec::Vec<ErasureCodingPolicyProto>,
 }
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetErasureCodingCodecsRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetErasureCodingCodecsResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub codec: ::prost::alloc::vec::Vec<CodecProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetErasureCodingPolicyRequestProto {
     /// path to get the policy info
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetErasureCodingPolicyResponseProto {
     #[prost(message, optional, tag = "1")]
     pub ec_policy: ::core::option::Option<ErasureCodingPolicyProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddErasureCodingPoliciesRequestProto {
     #[prost(message, repeated, tag = "1")]
     pub ec_policies: ::prost::alloc::vec::Vec<ErasureCodingPolicyProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddErasureCodingPoliciesResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub responses: ::prost::alloc::vec::Vec<AddErasureCodingPolicyResponseProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RemoveErasureCodingPolicyRequestProto {
     #[prost(string, required, tag = "1")]
     pub ec_policy_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveErasureCodingPolicyResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct EnableErasureCodingPolicyRequestProto {
     #[prost(string, required, tag = "1")]
     pub ec_policy_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct EnableErasureCodingPolicyResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DisableErasureCodingPolicyRequestProto {
     #[prost(string, required, tag = "1")]
     pub ec_policy_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct DisableErasureCodingPolicyResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UnsetErasureCodingPolicyRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct UnsetErasureCodingPolicyResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetEcTopologyResultForPoliciesRequestProto {
     #[prost(string, repeated, tag = "1")]
     pub policies: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetEcTopologyResultForPoliciesResponseProto {
     #[prost(message, required, tag = "1")]
@@ -2190,7 +2019,6 @@ pub struct GetEcTopologyResultForPoliciesResponseProto {
 }
 /// *
 /// Block erasure coding reconstruction info
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BlockEcReconstructionInfoProto {
     #[prost(message, required, tag = "1")]
@@ -2208,13 +2036,10 @@ pub struct BlockEcReconstructionInfoProto {
     #[prost(message, required, tag = "7")]
     pub ec_policy: ErasureCodingPolicyProto,
     #[prost(bytes = "vec", optional, tag = "8")]
-    pub exclude_reconstructed_indices: ::core::option::Option<
-        ::prost::alloc::vec::Vec<u8>,
-    >,
+    pub exclude_reconstructed_indices: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
 }
 /// *
 /// Codec and it's corresponding coders
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CodecProto {
     #[prost(string, required, tag = "1")]
@@ -2222,7 +2047,6 @@ pub struct CodecProto {
     #[prost(string, required, tag = "2")]
     pub coders: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBlockLocationsRequestProto {
     /// file name
@@ -2235,23 +2059,19 @@ pub struct GetBlockLocationsRequestProto {
     #[prost(uint64, required, tag = "3")]
     pub length: u64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBlockLocationsResponseProto {
     #[prost(message, optional, tag = "1")]
     pub locations: ::core::option::Option<LocatedBlocksProto>,
 }
 /// No parameters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetServerDefaultsRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetServerDefaultsResponseProto {
     #[prost(message, required, tag = "1")]
     pub server_defaults: FsServerDefaultsProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CreateRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2284,13 +2104,11 @@ pub struct CreateRequestProto {
     #[prost(string, optional, tag = "11")]
     pub storage_policy: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CreateResponseProto {
     #[prost(message, optional, tag = "1")]
     pub fs: ::core::option::Option<HdfsFileStatusProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AppendRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2301,7 +2119,6 @@ pub struct AppendRequestProto {
     #[prost(uint32, optional, tag = "3")]
     pub flag: ::core::option::Option<u32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AppendResponseProto {
     #[prost(message, optional, tag = "1")]
@@ -2309,7 +2126,6 @@ pub struct AppendResponseProto {
     #[prost(message, optional, tag = "2")]
     pub stat: ::core::option::Option<HdfsFileStatusProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetReplicationRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2318,13 +2134,11 @@ pub struct SetReplicationRequestProto {
     #[prost(uint32, required, tag = "2")]
     pub replication: u32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetReplicationResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetStoragePolicyRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2333,41 +2147,33 @@ pub struct SetStoragePolicyRequestProto {
     pub policy_name: ::prost::alloc::string::String,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetStoragePolicyResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UnsetStoragePolicyRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct UnsetStoragePolicyResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetStoragePolicyRequestProto {
     #[prost(string, required, tag = "1")]
     pub path: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetStoragePolicyResponseProto {
     #[prost(message, required, tag = "1")]
     pub storage_policy: BlockStoragePolicyProto,
 }
 /// void request
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetStoragePoliciesRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetStoragePoliciesResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub policies: ::prost::alloc::vec::Vec<BlockStoragePolicyProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetPermissionRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2376,10 +2182,8 @@ pub struct SetPermissionRequestProto {
     pub permission: FsPermissionProto,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetPermissionResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetOwnerRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2390,10 +2194,8 @@ pub struct SetOwnerRequestProto {
     pub groupname: ::core::option::Option<::prost::alloc::string::String>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetOwnerResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AbandonBlockRequestProto {
     #[prost(message, required, tag = "1")]
@@ -2407,10 +2209,8 @@ pub struct AbandonBlockRequestProto {
     pub file_id: ::core::option::Option<u64>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct AbandonBlockResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddBlockRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2428,16 +2228,19 @@ pub struct AddBlockRequestProto {
     #[prost(string, repeated, tag = "6")]
     pub favored_nodes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
     /// default to empty.
-    #[prost(enumeration = "AddBlockFlagProto", repeated, packed = "false", tag = "7")]
+    #[prost(
+        enumeration = "AddBlockFlagProto",
+        repeated,
+        packed = "false",
+        tag = "7"
+    )]
     pub flags: ::prost::alloc::vec::Vec<i32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddBlockResponseProto {
     #[prost(message, required, tag = "1")]
     pub block: LocatedBlockProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetAdditionalDatanodeRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2458,13 +2261,11 @@ pub struct GetAdditionalDatanodeRequestProto {
     #[prost(uint64, optional, tag = "8", default = "0")]
     pub file_id: ::core::option::Option<u64>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetAdditionalDatanodeResponseProto {
     #[prost(message, required, tag = "1")]
     pub block: LocatedBlockProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CompleteRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2477,23 +2278,19 @@ pub struct CompleteRequestProto {
     #[prost(uint64, optional, tag = "4", default = "0")]
     pub file_id: ::core::option::Option<u64>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CompleteResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ReportBadBlocksRequestProto {
     #[prost(message, repeated, tag = "1")]
     pub blocks: ::prost::alloc::vec::Vec<LocatedBlockProto>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ReportBadBlocksResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ConcatRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2502,10 +2299,8 @@ pub struct ConcatRequestProto {
     pub srcs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ConcatResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct TruncateRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2515,13 +2310,11 @@ pub struct TruncateRequestProto {
     #[prost(string, required, tag = "3")]
     pub client_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct TruncateResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RenameRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2529,13 +2322,11 @@ pub struct RenameRequestProto {
     #[prost(string, required, tag = "2")]
     pub dst: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RenameResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct Rename2RequestProto {
     #[prost(string, required, tag = "1")]
@@ -2548,10 +2339,8 @@ pub struct Rename2RequestProto {
     pub move_to_trash: ::core::option::Option<bool>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct Rename2ResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DeleteRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2559,13 +2348,11 @@ pub struct DeleteRequestProto {
     #[prost(bool, required, tag = "2")]
     pub recursive: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct DeleteResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MkdirsRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2577,13 +2364,11 @@ pub struct MkdirsRequestProto {
     #[prost(message, optional, tag = "4")]
     pub unmasked: ::core::option::Option<FsPermissionProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MkdirsResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetListingRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2593,13 +2378,11 @@ pub struct GetListingRequestProto {
     #[prost(bool, required, tag = "3")]
     pub need_location: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetListingResponseProto {
     #[prost(message, optional, tag = "1")]
     pub dir_list: ::core::option::Option<DirectoryListingProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBatchedListingRequestProto {
     #[prost(string, repeated, tag = "1")]
@@ -2609,7 +2392,6 @@ pub struct GetBatchedListingRequestProto {
     #[prost(bool, required, tag = "3")]
     pub need_location: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetBatchedListingResponseProto {
     #[prost(message, repeated, tag = "1")]
@@ -2620,30 +2402,23 @@ pub struct GetBatchedListingResponseProto {
     pub start_after: ::prost::alloc::vec::Vec<u8>,
 }
 /// no input parameters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetSnapshottableDirListingRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSnapshottableDirListingResponseProto {
     #[prost(message, optional, tag = "1")]
-    pub snapshottable_dir_list: ::core::option::Option<
-        SnapshottableDirectoryListingProto,
-    >,
+    pub snapshottable_dir_list: ::core::option::Option<SnapshottableDirectoryListingProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSnapshotListingRequestProto {
     #[prost(string, required, tag = "1")]
     pub snapshot_root: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSnapshotListingResponseProto {
     #[prost(message, optional, tag = "1")]
     pub snapshot_list: ::core::option::Option<SnapshotListingProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSnapshotDiffReportRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2653,13 +2428,11 @@ pub struct GetSnapshotDiffReportRequestProto {
     #[prost(string, required, tag = "3")]
     pub to_snapshot: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSnapshotDiffReportResponseProto {
     #[prost(message, required, tag = "1")]
     pub diff_report: SnapshotDiffReportProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSnapshotDiffReportListingRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2671,13 +2444,11 @@ pub struct GetSnapshotDiffReportListingRequestProto {
     #[prost(message, optional, tag = "4")]
     pub cursor: ::core::option::Option<SnapshotDiffReportCursorProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSnapshotDiffReportListingResponseProto {
     #[prost(message, required, tag = "1")]
     pub diff_report: SnapshotDiffReportListingProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RenewLeaseRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2686,10 +2457,8 @@ pub struct RenewLeaseRequestProto {
     pub namespaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RenewLeaseResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RecoverLeaseRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2697,18 +2466,15 @@ pub struct RecoverLeaseRequestProto {
     #[prost(string, required, tag = "2")]
     pub client_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RecoverLeaseResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
 /// no input paramters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetFsStatusRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetFsStatsResponseProto {
     #[prost(uint64, required, tag = "1")]
     pub capacity: u64,
@@ -2730,11 +2496,9 @@ pub struct GetFsStatsResponseProto {
     pub pending_deletion_blocks: ::core::option::Option<u64>,
 }
 /// no input paramters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetFsReplicatedBlockStatsRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetFsReplicatedBlockStatsResponseProto {
     #[prost(uint64, required, tag = "1")]
     pub low_redundancy: u64,
@@ -2752,11 +2516,9 @@ pub struct GetFsReplicatedBlockStatsResponseProto {
     pub highest_prio_low_redundancy_blocks: ::core::option::Option<u64>,
 }
 /// no input paramters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetFsEcBlockGroupStatsRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetFsEcBlockGroupStatsResponseProto {
     #[prost(uint64, required, tag = "1")]
     pub low_redundancy: u64,
@@ -2771,25 +2533,21 @@ pub struct GetFsEcBlockGroupStatsResponseProto {
     #[prost(uint64, optional, tag = "6")]
     pub highest_prio_low_redundancy_blocks: ::core::option::Option<u64>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetDatanodeReportRequestProto {
     #[prost(enumeration = "DatanodeReportTypeProto", required, tag = "1")]
     pub r#type: i32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetDatanodeReportResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub di: ::prost::alloc::vec::Vec<DatanodeInfoProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetDatanodeStorageReportRequestProto {
     #[prost(enumeration = "DatanodeReportTypeProto", required, tag = "1")]
     pub r#type: i32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DatanodeStorageReportProto {
     #[prost(message, required, tag = "1")]
@@ -2797,49 +2555,41 @@ pub struct DatanodeStorageReportProto {
     #[prost(message, repeated, tag = "2")]
     pub storage_reports: ::prost::alloc::vec::Vec<StorageReportProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetDatanodeStorageReportResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub datanode_storage_reports: ::prost::alloc::vec::Vec<DatanodeStorageReportProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetPreferredBlockSizeRequestProto {
     #[prost(string, required, tag = "1")]
     pub filename: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetPreferredBlockSizeResponseProto {
     #[prost(uint64, required, tag = "1")]
     pub bsize: u64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetSlowDatanodeReportRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetSlowDatanodeReportResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub datanode_info_proto: ::prost::alloc::vec::Vec<DatanodeInfoProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetSafeModeRequestProto {
     #[prost(enumeration = "SafeModeActionProto", required, tag = "1")]
     pub action: i32,
     #[prost(bool, optional, tag = "2", default = "false")]
     pub checked: ::core::option::Option<bool>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetSafeModeResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SaveNamespaceRequestProto {
     #[prost(uint64, optional, tag = "1", default = "0")]
     pub time_window: ::core::option::Option<u64>,
@@ -2847,68 +2597,55 @@ pub struct SaveNamespaceRequestProto {
     pub tx_gap: ::core::option::Option<u64>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SaveNamespaceResponseProto {
     #[prost(bool, optional, tag = "1", default = "true")]
     pub saved: ::core::option::Option<bool>,
 }
 /// no parameters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RollEditsRequestProto {}
 /// response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RollEditsResponseProto {
     #[prost(uint64, required, tag = "1")]
     pub new_segment_tx_id: u64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RestoreFailedStorageRequestProto {
     #[prost(string, required, tag = "1")]
     pub arg: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RestoreFailedStorageResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
 /// no parameters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RefreshNodesRequestProto {}
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RefreshNodesResponseProto {}
 /// no parameters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct FinalizeUpgradeRequestProto {}
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct FinalizeUpgradeResponseProto {}
 /// no parameters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct UpgradeStatusRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct UpgradeStatusResponseProto {
     #[prost(bool, required, tag = "1")]
     pub upgrade_finalized: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RollingUpgradeRequestProto {
     #[prost(enumeration = "RollingUpgradeActionProto", required, tag = "1")]
     pub action: i32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RollingUpgradeInfoProto {
     #[prost(message, required, tag = "1")]
@@ -2920,13 +2657,11 @@ pub struct RollingUpgradeInfoProto {
     #[prost(bool, required, tag = "4")]
     pub created_rollback_images: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RollingUpgradeResponseProto {
     #[prost(message, optional, tag = "1")]
     pub rolling_upgrade_info: ::core::option::Option<RollingUpgradeInfoProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListCorruptFileBlocksRequestProto {
     #[prost(string, required, tag = "1")]
@@ -2934,35 +2669,29 @@ pub struct ListCorruptFileBlocksRequestProto {
     #[prost(string, optional, tag = "2")]
     pub cookie: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListCorruptFileBlocksResponseProto {
     #[prost(message, required, tag = "1")]
     pub corrupt: CorruptFileBlocksProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct MetaSaveRequestProto {
     #[prost(string, required, tag = "1")]
     pub filename: ::prost::alloc::string::String,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MetaSaveResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetFileInfoRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetFileInfoResponseProto {
     #[prost(message, optional, tag = "1")]
     pub fs: ::core::option::Option<HdfsFileStatusProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLocatedFileInfoRequestProto {
     #[prost(string, optional, tag = "1")]
@@ -2970,25 +2699,21 @@ pub struct GetLocatedFileInfoRequestProto {
     #[prost(bool, optional, tag = "2", default = "false")]
     pub need_block_token: ::core::option::Option<bool>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLocatedFileInfoResponseProto {
     #[prost(message, optional, tag = "1")]
     pub fs: ::core::option::Option<HdfsFileStatusProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct IsFileClosedRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct IsFileClosedResponseProto {
     #[prost(bool, required, tag = "1")]
     pub result: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CacheDirectiveInfoProto {
     #[prost(int64, optional, tag = "1")]
@@ -3002,16 +2727,14 @@ pub struct CacheDirectiveInfoProto {
     #[prost(message, optional, tag = "5")]
     pub expiration: ::core::option::Option<CacheDirectiveInfoExpirationProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CacheDirectiveInfoExpirationProto {
     #[prost(int64, required, tag = "1")]
     pub millis: i64,
     #[prost(bool, required, tag = "2")]
     pub is_relative: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CacheDirectiveStatsProto {
     #[prost(int64, required, tag = "1")]
     pub bytes_needed: i64,
@@ -3024,7 +2747,6 @@ pub struct CacheDirectiveStatsProto {
     #[prost(bool, required, tag = "5")]
     pub has_expired: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddCacheDirectiveRequestProto {
     #[prost(message, required, tag = "1")]
@@ -3033,13 +2755,11 @@ pub struct AddCacheDirectiveRequestProto {
     #[prost(uint32, optional, tag = "2")]
     pub cache_flags: ::core::option::Option<u32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct AddCacheDirectiveResponseProto {
     #[prost(int64, required, tag = "1")]
     pub id: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModifyCacheDirectiveRequestProto {
     #[prost(message, required, tag = "1")]
@@ -3048,19 +2768,15 @@ pub struct ModifyCacheDirectiveRequestProto {
     #[prost(uint32, optional, tag = "2")]
     pub cache_flags: ::core::option::Option<u32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ModifyCacheDirectiveResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveCacheDirectiveRequestProto {
     #[prost(int64, required, tag = "1")]
     pub id: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveCacheDirectiveResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListCacheDirectivesRequestProto {
     #[prost(int64, required, tag = "1")]
@@ -3068,7 +2784,6 @@ pub struct ListCacheDirectivesRequestProto {
     #[prost(message, required, tag = "2")]
     pub filter: CacheDirectiveInfoProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CacheDirectiveEntryProto {
     #[prost(message, required, tag = "1")]
@@ -3076,7 +2791,6 @@ pub struct CacheDirectiveEntryProto {
     #[prost(message, required, tag = "2")]
     pub stats: CacheDirectiveStatsProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListCacheDirectivesResponseProto {
     #[prost(message, repeated, tag = "1")]
@@ -3084,7 +2798,6 @@ pub struct ListCacheDirectivesResponseProto {
     #[prost(bool, required, tag = "2")]
     pub has_more: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CachePoolInfoProto {
     #[prost(string, optional, tag = "1")]
@@ -3102,8 +2815,7 @@ pub struct CachePoolInfoProto {
     #[prost(uint32, optional, tag = "7", default = "1")]
     pub default_replication: ::core::option::Option<u32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CachePoolStatsProto {
     #[prost(int64, required, tag = "1")]
     pub bytes_needed: i64,
@@ -3116,43 +2828,35 @@ pub struct CachePoolStatsProto {
     #[prost(int64, required, tag = "5")]
     pub files_cached: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AddCachePoolRequestProto {
     #[prost(message, required, tag = "1")]
     pub info: CachePoolInfoProto,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct AddCachePoolResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ModifyCachePoolRequestProto {
     #[prost(message, required, tag = "1")]
     pub info: CachePoolInfoProto,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ModifyCachePoolResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RemoveCachePoolRequestProto {
     #[prost(string, required, tag = "1")]
     pub pool_name: ::prost::alloc::string::String,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RemoveCachePoolResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListCachePoolsRequestProto {
     #[prost(string, required, tag = "1")]
     pub prev_pool_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListCachePoolsResponseProto {
     #[prost(message, repeated, tag = "1")]
@@ -3160,7 +2864,6 @@ pub struct ListCachePoolsResponseProto {
     #[prost(bool, required, tag = "2")]
     pub has_more: bool,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CachePoolEntryProto {
     #[prost(message, required, tag = "1")]
@@ -3168,43 +2871,36 @@ pub struct CachePoolEntryProto {
     #[prost(message, required, tag = "2")]
     pub stats: CachePoolStatsProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetFileLinkInfoRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetFileLinkInfoResponseProto {
     #[prost(message, optional, tag = "1")]
     pub fs: ::core::option::Option<HdfsFileStatusProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetContentSummaryRequestProto {
     #[prost(string, required, tag = "1")]
     pub path: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetContentSummaryResponseProto {
     #[prost(message, required, tag = "1")]
     pub summary: ContentSummaryProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetQuotaUsageRequestProto {
     #[prost(string, required, tag = "1")]
     pub path: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetQuotaUsageResponseProto {
     #[prost(message, required, tag = "1")]
     pub usage: QuotaUsageProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetQuotaRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3217,10 +2913,8 @@ pub struct SetQuotaRequestProto {
     pub storage_type: ::core::option::Option<i32>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetQuotaResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct FsyncRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3234,10 +2928,8 @@ pub struct FsyncRequestProto {
     pub file_id: ::core::option::Option<u64>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct FsyncResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SetTimesRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3248,10 +2940,8 @@ pub struct SetTimesRequestProto {
     pub atime: u64,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetTimesResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CreateSymlinkRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3264,22 +2954,18 @@ pub struct CreateSymlinkRequestProto {
     pub create_parent: bool,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CreateSymlinkResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLinkTargetRequestProto {
     #[prost(string, required, tag = "1")]
     pub path: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetLinkTargetResponseProto {
     #[prost(string, optional, tag = "1")]
     pub target_path: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UpdateBlockForPipelineRequestProto {
     #[prost(message, required, tag = "1")]
@@ -3287,13 +2973,11 @@ pub struct UpdateBlockForPipelineRequestProto {
     #[prost(string, required, tag = "2")]
     pub client_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UpdateBlockForPipelineResponseProto {
     #[prost(message, required, tag = "1")]
     pub block: LocatedBlockProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct UpdatePipelineRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3308,30 +2992,24 @@ pub struct UpdatePipelineRequestProto {
     pub storage_i_ds: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct UpdatePipelineResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetBalancerBandwidthRequestProto {
     #[prost(int64, required, tag = "1")]
     pub bandwidth: i64,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SetBalancerBandwidthResponseProto {}
 /// no parameters
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetDataEncryptionKeyRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetDataEncryptionKeyResponseProto {
     #[prost(message, optional, tag = "1")]
     pub data_encryption_key: ::core::option::Option<DataEncryptionKeyProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CreateSnapshotRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3339,13 +3017,11 @@ pub struct CreateSnapshotRequestProto {
     #[prost(string, optional, tag = "2")]
     pub snapshot_name: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CreateSnapshotResponseProto {
     #[prost(string, required, tag = "1")]
     pub snapshot_path: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct RenameSnapshotRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3356,28 +3032,22 @@ pub struct RenameSnapshotRequestProto {
     pub snapshot_new_name: ::prost::alloc::string::String,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct RenameSnapshotResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct AllowSnapshotRequestProto {
     #[prost(string, required, tag = "1")]
     pub snapshot_root: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct AllowSnapshotResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DisallowSnapshotRequestProto {
     #[prost(string, required, tag = "1")]
     pub snapshot_root: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct DisallowSnapshotResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DeleteSnapshotRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3386,10 +3056,8 @@ pub struct DeleteSnapshotRequestProto {
     pub snapshot_name: ::prost::alloc::string::String,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct DeleteSnapshotResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct CheckAccessRequestProto {
     #[prost(string, required, tag = "1")]
@@ -3398,41 +3066,39 @@ pub struct CheckAccessRequestProto {
     pub mode: i32,
 }
 /// void response
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CheckAccessResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetCurrentEditLogTxidRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetCurrentEditLogTxidResponseProto {
     #[prost(int64, required, tag = "1")]
     pub txid: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct GetEditsFromTxidRequestProto {
     #[prost(int64, required, tag = "1")]
     pub txid: i64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct GetEditsFromTxidResponseProto {
     #[prost(message, required, tag = "1")]
     pub events_list: EventsListProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListOpenFilesRequestProto {
     #[prost(int64, required, tag = "1")]
     pub id: i64,
-    #[prost(enumeration = "OpenFilesTypeProto", repeated, packed = "false", tag = "2")]
+    #[prost(
+        enumeration = "OpenFilesTypeProto",
+        repeated,
+        packed = "false",
+        tag = "2"
+    )]
     pub types: ::prost::alloc::vec::Vec<i32>,
     #[prost(string, optional, tag = "3")]
     pub path: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpenFilesBatchResponseProto {
     #[prost(int64, required, tag = "1")]
@@ -3444,38 +3110,40 @@ pub struct OpenFilesBatchResponseProto {
     #[prost(string, required, tag = "4")]
     pub client_machine: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ListOpenFilesResponseProto {
     #[prost(message, repeated, tag = "1")]
     pub entries: ::prost::alloc::vec::Vec<OpenFilesBatchResponseProto>,
     #[prost(bool, required, tag = "2")]
     pub has_more: bool,
-    #[prost(enumeration = "OpenFilesTypeProto", repeated, packed = "false", tag = "3")]
+    #[prost(
+        enumeration = "OpenFilesTypeProto",
+        repeated,
+        packed = "false",
+        tag = "3"
+    )]
     pub types: ::prost::alloc::vec::Vec<i32>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsyncRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct MsyncResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct SatisfyStoragePolicyRequestProto {
     #[prost(string, required, tag = "1")]
     pub src: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct SatisfyStoragePolicyResponseProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct HaServiceStateRequestProto {}
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct HaServiceStateResponseProto {
-    #[prost(enumeration = "super::common::HaServiceStateProto", required, tag = "1")]
+    #[prost(
+        enumeration = "super::common::HaServiceStateProto",
+        required,
+        tag = "1"
+    )]
     pub state: i32,
 }
 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
@@ -3501,12 +3169,12 @@ impl CreateFlagProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            CreateFlagProto::Create => "CREATE",
-            CreateFlagProto::Overwrite => "OVERWRITE",
-            CreateFlagProto::Append => "APPEND",
-            CreateFlagProto::LazyPersist => "LAZY_PERSIST",
-            CreateFlagProto::NewBlock => "NEW_BLOCK",
-            CreateFlagProto::ShouldReplicate => "SHOULD_REPLICATE",
+            Self::Create => "CREATE",
+            Self::Overwrite => "OVERWRITE",
+            Self::Append => "APPEND",
+            Self::LazyPersist => "LAZY_PERSIST",
+            Self::NewBlock => "NEW_BLOCK",
+            Self::ShouldReplicate => "SHOULD_REPLICATE",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3537,8 +3205,8 @@ impl AddBlockFlagProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            AddBlockFlagProto::NoLocalWrite => "NO_LOCAL_WRITE",
-            AddBlockFlagProto::IgnoreClientLocality => "IGNORE_CLIENT_LOCALITY",
+            Self::NoLocalWrite => "NO_LOCAL_WRITE",
+            Self::IgnoreClientLocality => "IGNORE_CLIENT_LOCALITY",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3568,12 +3236,12 @@ impl DatanodeReportTypeProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            DatanodeReportTypeProto::All => "ALL",
-            DatanodeReportTypeProto::Live => "LIVE",
-            DatanodeReportTypeProto::Dead => "DEAD",
-            DatanodeReportTypeProto::Decommissioning => "DECOMMISSIONING",
-            DatanodeReportTypeProto::EnteringMaintenance => "ENTERING_MAINTENANCE",
-            DatanodeReportTypeProto::InMaintenance => "IN_MAINTENANCE",
+            Self::All => "ALL",
+            Self::Live => "LIVE",
+            Self::Dead => "DEAD",
+            Self::Decommissioning => "DECOMMISSIONING",
+            Self::EnteringMaintenance => "ENTERING_MAINTENANCE",
+            Self::InMaintenance => "IN_MAINTENANCE",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3604,10 +3272,10 @@ impl SafeModeActionProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            SafeModeActionProto::SafemodeLeave => "SAFEMODE_LEAVE",
-            SafeModeActionProto::SafemodeEnter => "SAFEMODE_ENTER",
-            SafeModeActionProto::SafemodeGet => "SAFEMODE_GET",
-            SafeModeActionProto::SafemodeForceExit => "SAFEMODE_FORCE_EXIT",
+            Self::SafemodeLeave => "SAFEMODE_LEAVE",
+            Self::SafemodeEnter => "SAFEMODE_ENTER",
+            Self::SafemodeGet => "SAFEMODE_GET",
+            Self::SafemodeForceExit => "SAFEMODE_FORCE_EXIT",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3635,9 +3303,9 @@ impl RollingUpgradeActionProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            RollingUpgradeActionProto::Query => "QUERY",
-            RollingUpgradeActionProto::Start => "START",
-            RollingUpgradeActionProto::Finalize => "FINALIZE",
+            Self::Query => "QUERY",
+            Self::Start => "START",
+            Self::Finalize => "FINALIZE",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3663,7 +3331,7 @@ impl CacheFlagProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            CacheFlagProto::Force => "FORCE",
+            Self::Force => "FORCE",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3687,8 +3355,8 @@ impl OpenFilesTypeProto {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            OpenFilesTypeProto::AllOpenFiles => "ALL_OPEN_FILES",
-            OpenFilesTypeProto::BlockingDecommission => "BLOCKING_DECOMMISSION",
+            Self::AllOpenFiles => "ALL_OPEN_FILES",
+            Self::BlockingDecommission => "BLOCKING_DECOMMISSION",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3700,7 +3368,6 @@ impl OpenFilesTypeProto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DataTransferEncryptorMessageProto {
     #[prost(
@@ -3722,17 +3389,7 @@ pub struct DataTransferEncryptorMessageProto {
 }
 /// Nested message and enum types in `DataTransferEncryptorMessageProto`.
 pub mod data_transfer_encryptor_message_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum DataTransferEncryptorStatus {
         Success = 0,
@@ -3746,9 +3403,9 @@ pub mod data_transfer_encryptor_message_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                DataTransferEncryptorStatus::Success => "SUCCESS",
-                DataTransferEncryptorStatus::ErrorUnknownKey => "ERROR_UNKNOWN_KEY",
-                DataTransferEncryptorStatus::Error => "ERROR",
+                Self::Success => "SUCCESS",
+                Self::ErrorUnknownKey => "ERROR_UNKNOWN_KEY",
+                Self::Error => "ERROR",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
@@ -3762,7 +3419,6 @@ pub mod data_transfer_encryptor_message_proto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct HandshakeSecretProto {
     #[prost(bytes = "vec", required, tag = "1")]
@@ -3770,7 +3426,6 @@ pub struct HandshakeSecretProto {
     #[prost(string, required, tag = "2")]
     pub bpid: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BaseHeaderProto {
     #[prost(message, required, tag = "1")]
@@ -3780,7 +3435,6 @@ pub struct BaseHeaderProto {
     #[prost(message, optional, tag = "3")]
     pub trace_info: ::core::option::Option<DataTransferTraceInfoProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct DataTransferTraceInfoProto {
     #[prost(uint64, optional, tag = "1")]
@@ -3790,7 +3444,6 @@ pub struct DataTransferTraceInfoProto {
     #[prost(bytes = "vec", optional, tag = "3")]
     pub span_context: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ClientOperationHeaderProto {
     #[prost(message, required, tag = "1")]
@@ -3798,15 +3451,13 @@ pub struct ClientOperationHeaderProto {
     #[prost(string, required, tag = "2")]
     pub client_name: ::prost::alloc::string::String,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct CachingStrategyProto {
     #[prost(bool, optional, tag = "1")]
     pub drop_behind: ::core::option::Option<bool>,
     #[prost(int64, optional, tag = "2")]
     pub readahead: ::core::option::Option<i64>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpReadBlockProto {
     #[prost(message, required, tag = "1")]
@@ -3820,15 +3471,13 @@ pub struct OpReadBlockProto {
     #[prost(message, optional, tag = "5")]
     pub caching_strategy: ::core::option::Option<CachingStrategyProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ChecksumProto {
     #[prost(enumeration = "ChecksumTypeProto", required, tag = "1")]
     pub r#type: i32,
     #[prost(uint32, required, tag = "2")]
     pub bytes_per_checksum: u32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpWriteBlockProto {
     #[prost(message, required, tag = "1")]
@@ -3857,9 +3506,19 @@ pub struct OpWriteBlockProto {
     pub requested_checksum: ChecksumProto,
     #[prost(message, optional, tag = "10")]
     pub caching_strategy: ::core::option::Option<CachingStrategyProto>,
-    #[prost(enumeration = "StorageTypeProto", optional, tag = "11", default = "Disk")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        optional,
+        tag = "11",
+        default = "Disk"
+    )]
     pub storage_type: ::core::option::Option<i32>,
-    #[prost(enumeration = "StorageTypeProto", repeated, packed = "false", tag = "12")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        repeated,
+        packed = "false",
+        tag = "12"
+    )]
     pub target_storage_types: ::prost::alloc::vec::Vec<i32>,
     /// *
     /// Hint to the DataNode that the block can be allocated on transient
@@ -3879,17 +3538,7 @@ pub struct OpWriteBlockProto {
 }
 /// Nested message and enum types in `OpWriteBlockProto`.
 pub mod op_write_block_proto {
-    #[derive(
-        Clone,
-        Copy,
-        Debug,
-        PartialEq,
-        Eq,
-        Hash,
-        PartialOrd,
-        Ord,
-        ::prost::Enumeration
-    )]
+    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
     #[repr(i32)]
     pub enum BlockConstructionStage {
         PipelineSetupAppend = 0,
@@ -3917,34 +3566,24 @@ pub mod op_write_block_proto {
         /// (if the ProtoBuf definition does not change) and safe for programmatic use.
         pub fn as_str_name(&self) -> &'static str {
             match self {
-                BlockConstructionStage::PipelineSetupAppend => "PIPELINE_SETUP_APPEND",
-                BlockConstructionStage::PipelineSetupAppendRecovery => {
-                    "PIPELINE_SETUP_APPEND_RECOVERY"
-                }
-                BlockConstructionStage::DataStreaming => "DATA_STREAMING",
-                BlockConstructionStage::PipelineSetupStreamingRecovery => {
-                    "PIPELINE_SETUP_STREAMING_RECOVERY"
-                }
-                BlockConstructionStage::PipelineClose => "PIPELINE_CLOSE",
-                BlockConstructionStage::PipelineCloseRecovery => {
-                    "PIPELINE_CLOSE_RECOVERY"
-                }
-                BlockConstructionStage::PipelineSetupCreate => "PIPELINE_SETUP_CREATE",
-                BlockConstructionStage::TransferRbw => "TRANSFER_RBW",
-                BlockConstructionStage::TransferFinalized => "TRANSFER_FINALIZED",
+                Self::PipelineSetupAppend => "PIPELINE_SETUP_APPEND",
+                Self::PipelineSetupAppendRecovery => "PIPELINE_SETUP_APPEND_RECOVERY",
+                Self::DataStreaming => "DATA_STREAMING",
+                Self::PipelineSetupStreamingRecovery => "PIPELINE_SETUP_STREAMING_RECOVERY",
+                Self::PipelineClose => "PIPELINE_CLOSE",
+                Self::PipelineCloseRecovery => "PIPELINE_CLOSE_RECOVERY",
+                Self::PipelineSetupCreate => "PIPELINE_SETUP_CREATE",
+                Self::TransferRbw => "TRANSFER_RBW",
+                Self::TransferFinalized => "TRANSFER_FINALIZED",
             }
         }
         /// Creates an enum from field names used in the ProtoBuf definition.
         pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
             match value {
                 "PIPELINE_SETUP_APPEND" => Some(Self::PipelineSetupAppend),
-                "PIPELINE_SETUP_APPEND_RECOVERY" => {
-                    Some(Self::PipelineSetupAppendRecovery)
-                }
+                "PIPELINE_SETUP_APPEND_RECOVERY" => Some(Self::PipelineSetupAppendRecovery),
                 "DATA_STREAMING" => Some(Self::DataStreaming),
-                "PIPELINE_SETUP_STREAMING_RECOVERY" => {
-                    Some(Self::PipelineSetupStreamingRecovery)
-                }
+                "PIPELINE_SETUP_STREAMING_RECOVERY" => Some(Self::PipelineSetupStreamingRecovery),
                 "PIPELINE_CLOSE" => Some(Self::PipelineClose),
                 "PIPELINE_CLOSE_RECOVERY" => Some(Self::PipelineCloseRecovery),
                 "PIPELINE_SETUP_CREATE" => Some(Self::PipelineSetupCreate),
@@ -3955,19 +3594,22 @@ pub mod op_write_block_proto {
         }
     }
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpTransferBlockProto {
     #[prost(message, required, tag = "1")]
     pub header: ClientOperationHeaderProto,
     #[prost(message, repeated, tag = "2")]
     pub targets: ::prost::alloc::vec::Vec<DatanodeInfoProto>,
-    #[prost(enumeration = "StorageTypeProto", repeated, packed = "false", tag = "3")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        repeated,
+        packed = "false",
+        tag = "3"
+    )]
     pub target_storage_types: ::prost::alloc::vec::Vec<i32>,
     #[prost(string, repeated, tag = "4")]
     pub target_storage_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpReplaceBlockProto {
     #[prost(message, required, tag = "1")]
@@ -3976,18 +3618,21 @@ pub struct OpReplaceBlockProto {
     pub del_hint: ::prost::alloc::string::String,
     #[prost(message, required, tag = "3")]
     pub source: DatanodeInfoProto,
-    #[prost(enumeration = "StorageTypeProto", optional, tag = "4", default = "Disk")]
+    #[prost(
+        enumeration = "StorageTypeProto",
+        optional,
+        tag = "4",
+        default = "Disk"
+    )]
     pub storage_type: ::core::option::Option<i32>,
     #[prost(string, optional, tag = "5")]
     pub storage_id: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpCopyBlockProto {
     #[prost(message, required, tag = "1")]
     pub header: BaseHeaderProto,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpBlockChecksumProto {
     #[prost(message, required, tag = "1")]
@@ -3995,7 +3640,6 @@ pub struct OpBlockChecksumProto {
     #[prost(message, optional, tag = "2")]
     pub block_checksum_options: ::core::option::Option<BlockChecksumOptionsProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpBlockGroupChecksumProto {
     #[prost(message, required, tag = "1")]
@@ -4016,8 +3660,7 @@ pub struct OpBlockGroupChecksumProto {
 }
 /// *
 /// An ID uniquely identifying a shared memory segment.
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ShortCircuitShmIdProto {
     #[prost(int64, required, tag = "1")]
     pub hi: i64,
@@ -4026,15 +3669,13 @@ pub struct ShortCircuitShmIdProto {
 }
 /// *
 /// An ID uniquely identifying a slot within a shared memory segment.
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ShortCircuitShmSlotProto {
     #[prost(message, required, tag = "1")]
     pub shm_id: ShortCircuitShmIdProto,
     #[prost(int32, required, tag = "2")]
     pub slot_idx: i32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpRequestShortCircuitAccessProto {
     #[prost(message, required, tag = "1")]
@@ -4055,7 +3696,6 @@ pub struct OpRequestShortCircuitAccessProto {
     #[prost(bool, optional, tag = "4", default = "false")]
     pub supports_receipt_verification: ::core::option::Option<bool>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ReleaseShortCircuitAccessRequestProto {
     #[prost(message, required, tag = "1")]
@@ -4063,7 +3703,6 @@ pub struct ReleaseShortCircuitAccessRequestProto {
     #[prost(message, optional, tag = "2")]
     pub trace_info: ::core::option::Option<DataTransferTraceInfoProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ReleaseShortCircuitAccessResponseProto {
     #[prost(enumeration = "Status", required, tag = "1")]
@@ -4071,7 +3710,6 @@ pub struct ReleaseShortCircuitAccessResponseProto {
     #[prost(string, optional, tag = "2")]
     pub error: ::core::option::Option<::prost::alloc::string::String>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ShortCircuitShmRequestProto {
     /// The name of the client requesting the shared memory segment.  This is
@@ -4081,7 +3719,6 @@ pub struct ShortCircuitShmRequestProto {
     #[prost(message, optional, tag = "2")]
     pub trace_info: ::core::option::Option<DataTransferTraceInfoProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct ShortCircuitShmResponseProto {
     #[prost(enumeration = "Status", required, tag = "1")]
@@ -4091,8 +3728,7 @@ pub struct ShortCircuitShmResponseProto {
     #[prost(message, optional, tag = "3")]
     pub id: ::core::option::Option<ShortCircuitShmIdProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct PacketHeaderProto {
     /// All fields must be fixed-length!
     #[prost(sfixed64, required, tag = "1")]
@@ -4106,7 +3742,6 @@ pub struct PacketHeaderProto {
     #[prost(bool, optional, tag = "5", default = "false")]
     pub sync_block: ::core::option::Option<bool>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct PipelineAckProto {
     #[prost(sint64, required, tag = "1")]
@@ -4121,8 +3756,7 @@ pub struct PipelineAckProto {
 /// *
 /// Sent as part of the BlockOpResponseProto
 /// for READ_BLOCK and COPY_BLOCK operations.
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ReadOpChecksumInfoProto {
     #[prost(message, required, tag = "1")]
     pub checksum: ChecksumProto,
@@ -4133,7 +3767,6 @@ pub struct ReadOpChecksumInfoProto {
     #[prost(uint64, required, tag = "2")]
     pub chunk_offset: u64,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct BlockOpResponseProto {
     #[prost(enumeration = "Status", required, tag = "1")]
@@ -4160,19 +3793,16 @@ pub struct BlockOpResponseProto {
 /// *
 /// Message sent from the client to the DN after reading the entire
 /// read request.
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct ClientReadStatusProto {
     #[prost(enumeration = "Status", required, tag = "1")]
     pub status: i32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
-#[derive(Clone, PartialEq, ::prost::Message)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
 pub struct DnTransferAckProto {
     #[prost(enumeration = "Status", required, tag = "1")]
     pub status: i32,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpBlockChecksumResponseProto {
     #[prost(uint32, required, tag = "1")]
@@ -4186,7 +3816,6 @@ pub struct OpBlockChecksumResponseProto {
     #[prost(message, optional, tag = "5")]
     pub block_checksum_options: ::core::option::Option<BlockChecksumOptionsProto>,
 }
-#[allow(clippy::derive_partial_eq_without_eq)]
 #[derive(Clone, PartialEq, ::prost::Message)]
 pub struct OpCustomProto {
     #[prost(string, required, tag = "1")]
@@ -4222,20 +3851,20 @@ impl Status {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            Status::Success => "SUCCESS",
-            Status::Error => "ERROR",
-            Status::ErrorChecksum => "ERROR_CHECKSUM",
-            Status::ErrorInvalid => "ERROR_INVALID",
-            Status::ErrorExists => "ERROR_EXISTS",
-            Status::ErrorAccessToken => "ERROR_ACCESS_TOKEN",
-            Status::ChecksumOk => "CHECKSUM_OK",
-            Status::ErrorUnsupported => "ERROR_UNSUPPORTED",
-            Status::OobRestart => "OOB_RESTART",
-            Status::OobReserved1 => "OOB_RESERVED1",
-            Status::OobReserved2 => "OOB_RESERVED2",
-            Status::OobReserved3 => "OOB_RESERVED3",
-            Status::InProgress => "IN_PROGRESS",
-            Status::ErrorBlockPinned => "ERROR_BLOCK_PINNED",
+            Self::Success => "SUCCESS",
+            Self::Error => "ERROR",
+            Self::ErrorChecksum => "ERROR_CHECKSUM",
+            Self::ErrorInvalid => "ERROR_INVALID",
+            Self::ErrorExists => "ERROR_EXISTS",
+            Self::ErrorAccessToken => "ERROR_ACCESS_TOKEN",
+            Self::ChecksumOk => "CHECKSUM_OK",
+            Self::ErrorUnsupported => "ERROR_UNSUPPORTED",
+            Self::OobRestart => "OOB_RESTART",
+            Self::OobReserved1 => "OOB_RESERVED1",
+            Self::OobReserved2 => "OOB_RESERVED2",
+            Self::OobReserved3 => "OOB_RESERVED3",
+            Self::InProgress => "IN_PROGRESS",
+            Self::ErrorBlockPinned => "ERROR_BLOCK_PINNED",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.
@@ -4272,10 +3901,8 @@ impl ShortCircuitFdResponse {
     /// (if the ProtoBuf definition does not change) and safe for programmatic use.
     pub fn as_str_name(&self) -> &'static str {
         match self {
-            ShortCircuitFdResponse::DoNotUseReceiptVerification => {
-                "DO_NOT_USE_RECEIPT_VERIFICATION"
-            }
-            ShortCircuitFdResponse::UseReceiptVerification => "USE_RECEIPT_VERIFICATION",
+            Self::DoNotUseReceiptVerification => "DO_NOT_USE_RECEIPT_VERIFICATION",
+            Self::UseReceiptVerification => "USE_RECEIPT_VERIFICATION",
         }
     }
     /// Creates an enum from field names used in the ProtoBuf definition.


Test patch:
diff --git a/.github/workflows/python-test.yml b/.github/workflows/python-test.yml
index 4139cd0..48fbf7c 100644
--- a/.github/workflows/python-test.yml
+++ b/.github/workflows/python-test.yml
@@ -18,8 +18,8 @@ jobs:
       fail-fast: false
       matrix:
         python-version:
-          - 3.8
-          - 3.12
+          - 3.9
+          - 3.13
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v4